جمعه 13 دی 1392
23:49
نظرات()
درود؛
کد بازی دوز بدون نیاز به رنگ ها و با وسیله آرایه ها و البته همراه با راهنما در ادامه همین پست قابل دیدن است.
تنها برای یادگیری از کد ها استفاده نمایید.
بدرود.
پیش از دیدن کد, یک سری اطلاعات خلاصه شده ملزوم است تا با آنها آشنا شوید:
جدول بازی اینگونه تقسیم بندی شده است و بازه ها هم هرکدام از مستطیل های کوچک هستند؛ مختصات ماوس ابتدا سنجیده شده و بازی را طوی متوجه می کنیم تا به طور مناسب مختصات را محاسبه کرده تا در خانه ای که موشواره قرار دارد یک دایره قرمز (کاربر شماره یک) یا بنفش (کاربر شماره دو) ایجاده کرده و مقدار 0 یا 1 را بسته به اینکه چه کاربری بازی را انجام میدهد؛ در آرایه همان قسمت (بازه) قرار می دهد.
کد بازی دوز بدون نیاز به رنگ ها و با وسیله آرایه ها و البته همراه با راهنما در ادامه همین پست قابل دیدن است.
تنها برای یادگیری از کد ها استفاده نمایید.
بدرود.
پیش از دیدن کد, یک سری اطلاعات خلاصه شده ملزوم است تا با آنها آشنا شوید:
جدول بازی اینگونه تقسیم بندی شده است و بازه ها هم هرکدام از مستطیل های کوچک هستند؛ مختصات ماوس ابتدا سنجیده شده و بازی را طوی متوجه می کنیم تا به طور مناسب مختصات را محاسبه کرده تا در خانه ای که موشواره قرار دارد یک دایره قرمز (کاربر شماره یک) یا بنفش (کاربر شماره دو) ایجاده کرده و مقدار 0 یا 1 را بسته به اینکه چه کاربری بازی را انجام میدهد؛ در آرایه همان قسمت (بازه) قرار می دهد.
#include<iostream.h> بخش فراخوانی توابع
#include<conio.h>
#include<graphics.h>
#include<mouse.h> فراخوانی توابع موشواره
#include<process.h> فراخوانی تابع خروج
#include<dos.h> فراخوانی توابع صدا
#include<stdlib.h> کد فراخوانی توابع رندم
int AA[3][3]; int BB[3][3]; ساخت آرایه ها
void Copy_right_DANOOSH_Peechgah () این کد علاوه بر ایجاد خطوط و تشکیل جدول؛ آرایه ها را
{ .برابر با عددی غیر صفر و یک می کند
for (int i=1; i<4; i++)
{
for (int j=1; j<4; j++)
{
if ((AA[i][j]==0)||(AA[i][j]==1))
AA[i][j]=rand();
}
}
sound(2014);
setbkcolor(7);
delay(95);
nosound();
sound(1392);
delay(95);
nosound();
line (0,0,480,0); line (0,0,0,360);
line (0,120,480,120); line (160,0,160,360);
line (0,240,480,240); line (320,0,320,360);
line (0,360,480,360); line (640,0,640,640);
line (0,480,480,480); line (480,0,480,360);
}
void A(int x, int y, int i, int j) کدی که دایره بازیکن شماره یک را می نویسد
{ if ((AA[i][j]!=0)&&(AA[i][j]!=1)) .و آرایه های منتخب را برابر با صفر می کند
{AA[i][j]=1;
if ((x<160)&&(y<120)) این ها چگونگی تقسیم بندی (بازه بندی) زمین یا جدول
circle (80,60,60); .بازی را نشان می دهند؛ رجوع کنید به همان تصویر بالا
if ((x>160)&&(x<320)&&(y<120))
circle (240,60,60);
if ((x>320)&&(x<640)&&(y<120))
circle (400,60,60);
if ((x<160)&&(y>120)&&(y<240))
circle (80,180,60);
if ((x<160)&&(y>240)&&(y<480))
circle (80,300,60);
if ((x>160)&&(y>120)&&(y<240)&&(x<320))
circle (240,180,60);
if ((x>320)&&(y>120)&&(y<240)&&(x<640))
circle (400,180,60);
if ((x>160)&&(x<320)&&(y>240)&&(y<480))
circle (240,300,60);
if ((x>320)&&(x<640)&&(y>240)&&(y<480))
circle (400,300,60);}
}
void B(int x, int y, int i, int j) همان کار تابع پیشین را انجام می دهد
{ if ((AA[i][j]!=0)&&(AA[i][j]!=1)) منتهی آرایه های منتخب را برابر با
{AA[i][j]=0; .یک می نماید و سپس دایره کاربر دوم را رسم می کند
if ((x<160)&&(y<120))
circle (80,60,60);
if ((x>160)&&(x<320)&&(y<120))
circle (240,60,60);
if ((x>320)&&(x<640)&&(y<120))
circle (400,60,60);
if ((x<160)&&(y>120)&&(y<240))
circle (80,180,60);
if ((x<160)&&(y>240)&&(y<480))
circle (80,300,60);
if ((x>160)&&(y>120)&&(y<240)&&(x<320))
circle (240,180,60);
if ((x>320)&&(y>120)&&(y<240)&&(x<640))
circle (400,180,60);
if ((x>160)&&(x<320)&&(y>240)&&(y<480))
circle (240,300,60);
if ((x>320)&&(x<640)&&(y>240)&&(y<480))
circle (400,300,60);}
}
void RULE () این تابع چک میکند که آیا سه آرایه در یک ستون
{ یال سه آرایه در یک سطر مقدار مساوی دارند یا خیر
for (int i=1; i<=3; i++) اگر همه برابر باشند بازی تمام می شود
{
if ((AA[1][i]==AA[2][i])&&(AA[3][i]==AA[2][i]))
exit(0);
if ((AA[i][1]==AA[i][2])&&(AA[i][3]==AA[i][2]))
exit(0);
}
}
void main() تابع اصلی بازی
{
int x,y,c;
int m=0,d=0;
initgraph(&m,&d,"");
initmouse(); فراخوانی دستورات موشواره
showmouse(); نمایش موشواره
Copy_right_DANOOSH_Peechgah (); .فراخوانی تابع نخست
while (1==1) هم استفاده کرد for (;;) می توان به جای این دستور از
{
getmouse(&x,&y,&c); مختصات و نوع کلیک (کلیک راست یا چپ) را میگیرد
if (c==1) اگر چپ کلیک شد:
{setcolor(4); رنگ دایره کاربر نخست
if ((x<160)&&(y<120)) بازه بندی برای کلیک کردن
A(x,y,1,1); آرایه یک یک فراخوانی شده و مقادیر مختصات موشواره وارد داده می شود
if ((x>160)&&(x<320)&&(y<120))
A(x,y,1,2);
if ((x>320)&&(x<640)&&(y<120))
A(x,y,1,3);
if ((x<160)&&(y>120)&&(y<240))
A(x,y,2,1);
if ((x<160)&&(y>240)&&(y<480))
A(x,y,3,1);
if ((x>160)&&(y>120)&&(y<240)&&(x<320))
A(x,y,2,2);
if ((x>320)&&(y>120)&&(y<240)&&(x<640))
A(x,y,2,3);
if ((x>160)&&(x<320)&&(y>240)&&(y<480))
A(x,y,3,2);
if ((x>320)&&(x<640)&&(y>240)&&(y<480))
A(x,y,3,3);
setcolor(15);} رنگ به حالت پیش فرض در می آید
if (c==2) اگر راست کلیک شد:
{
setcolor(5); رنگ دایره بازیکن دوم
if ((x<160)&&(y<120))
B(x,y,1,1);
if ((x>160)&&(x<320)&&(y<120))
B(x,y,1,2);
if ((x>320)&&(x<640)&&(y<120))
B(x,y,1,3);
if ((x<160)&&(y>120)&&(y<240))
B(x,y,2,1);
if ((x<160)&&(y>240)&&(y<480))
B(x,y,3,1);
if ((x>160)&&(y>120)&&(y<240)&&(x<320))
B(x,y,2,2);
if ((x>320)&&(y>120)&&(y<240)&&(x<640))
B(x,y,2,3);
if ((x>160)&&(x<320)&&(y>240)&&(y<480))
B(x,y,3,2);
if ((x>320)&&(x<640)&&(y>240)&&(y<480))
B(x,y,3,3);
setcolor(15); رنگ به حالت پیش فرض در آید
}
RULE(); پس از هر کلیک؛ چک می کند آیا کسی برنده شده است یا خیر
}
exit(0);
}
#include<conio.h>
#include<graphics.h>
#include<mouse.h> فراخوانی توابع موشواره
#include<process.h> فراخوانی تابع خروج
#include<dos.h> فراخوانی توابع صدا
#include<stdlib.h> کد فراخوانی توابع رندم
int AA[3][3]; int BB[3][3]; ساخت آرایه ها
void Copy_right_DANOOSH_Peechgah () این کد علاوه بر ایجاد خطوط و تشکیل جدول؛ آرایه ها را
{ .برابر با عددی غیر صفر و یک می کند
for (int i=1; i<4; i++)
{
for (int j=1; j<4; j++)
{
if ((AA[i][j]==0)||(AA[i][j]==1))
AA[i][j]=rand();
}
}
sound(2014);
setbkcolor(7);
delay(95);
nosound();
sound(1392);
delay(95);
nosound();
line (0,0,480,0); line (0,0,0,360);
line (0,120,480,120); line (160,0,160,360);
line (0,240,480,240); line (320,0,320,360);
line (0,360,480,360); line (640,0,640,640);
line (0,480,480,480); line (480,0,480,360);
}
void A(int x, int y, int i, int j) کدی که دایره بازیکن شماره یک را می نویسد
{ if ((AA[i][j]!=0)&&(AA[i][j]!=1)) .و آرایه های منتخب را برابر با صفر می کند
{AA[i][j]=1;
if ((x<160)&&(y<120)) این ها چگونگی تقسیم بندی (بازه بندی) زمین یا جدول
circle (80,60,60); .بازی را نشان می دهند؛ رجوع کنید به همان تصویر بالا
if ((x>160)&&(x<320)&&(y<120))
circle (240,60,60);
if ((x>320)&&(x<640)&&(y<120))
circle (400,60,60);
if ((x<160)&&(y>120)&&(y<240))
circle (80,180,60);
if ((x<160)&&(y>240)&&(y<480))
circle (80,300,60);
if ((x>160)&&(y>120)&&(y<240)&&(x<320))
circle (240,180,60);
if ((x>320)&&(y>120)&&(y<240)&&(x<640))
circle (400,180,60);
if ((x>160)&&(x<320)&&(y>240)&&(y<480))
circle (240,300,60);
if ((x>320)&&(x<640)&&(y>240)&&(y<480))
circle (400,300,60);}
}
void B(int x, int y, int i, int j) همان کار تابع پیشین را انجام می دهد
{ if ((AA[i][j]!=0)&&(AA[i][j]!=1)) منتهی آرایه های منتخب را برابر با
{AA[i][j]=0; .یک می نماید و سپس دایره کاربر دوم را رسم می کند
if ((x<160)&&(y<120))
circle (80,60,60);
if ((x>160)&&(x<320)&&(y<120))
circle (240,60,60);
if ((x>320)&&(x<640)&&(y<120))
circle (400,60,60);
if ((x<160)&&(y>120)&&(y<240))
circle (80,180,60);
if ((x<160)&&(y>240)&&(y<480))
circle (80,300,60);
if ((x>160)&&(y>120)&&(y<240)&&(x<320))
circle (240,180,60);
if ((x>320)&&(y>120)&&(y<240)&&(x<640))
circle (400,180,60);
if ((x>160)&&(x<320)&&(y>240)&&(y<480))
circle (240,300,60);
if ((x>320)&&(x<640)&&(y>240)&&(y<480))
circle (400,300,60);}
}
void RULE () این تابع چک میکند که آیا سه آرایه در یک ستون
{ یال سه آرایه در یک سطر مقدار مساوی دارند یا خیر
for (int i=1; i<=3; i++) اگر همه برابر باشند بازی تمام می شود
{
if ((AA[1][i]==AA[2][i])&&(AA[3][i]==AA[2][i]))
exit(0);
if ((AA[i][1]==AA[i][2])&&(AA[i][3]==AA[i][2]))
exit(0);
}
}
void main() تابع اصلی بازی
{
int x,y,c;
int m=0,d=0;
initgraph(&m,&d,"");
initmouse(); فراخوانی دستورات موشواره
showmouse(); نمایش موشواره
Copy_right_DANOOSH_Peechgah (); .فراخوانی تابع نخست
while (1==1) هم استفاده کرد for (;;) می توان به جای این دستور از
{
getmouse(&x,&y,&c); مختصات و نوع کلیک (کلیک راست یا چپ) را میگیرد
if (c==1) اگر چپ کلیک شد:
{setcolor(4); رنگ دایره کاربر نخست
if ((x<160)&&(y<120)) بازه بندی برای کلیک کردن
A(x,y,1,1); آرایه یک یک فراخوانی شده و مقادیر مختصات موشواره وارد داده می شود
if ((x>160)&&(x<320)&&(y<120))
A(x,y,1,2);
if ((x>320)&&(x<640)&&(y<120))
A(x,y,1,3);
if ((x<160)&&(y>120)&&(y<240))
A(x,y,2,1);
if ((x<160)&&(y>240)&&(y<480))
A(x,y,3,1);
if ((x>160)&&(y>120)&&(y<240)&&(x<320))
A(x,y,2,2);
if ((x>320)&&(y>120)&&(y<240)&&(x<640))
A(x,y,2,3);
if ((x>160)&&(x<320)&&(y>240)&&(y<480))
A(x,y,3,2);
if ((x>320)&&(x<640)&&(y>240)&&(y<480))
A(x,y,3,3);
setcolor(15);} رنگ به حالت پیش فرض در می آید
if (c==2) اگر راست کلیک شد:
{
setcolor(5); رنگ دایره بازیکن دوم
if ((x<160)&&(y<120))
B(x,y,1,1);
if ((x>160)&&(x<320)&&(y<120))
B(x,y,1,2);
if ((x>320)&&(x<640)&&(y<120))
B(x,y,1,3);
if ((x<160)&&(y>120)&&(y<240))
B(x,y,2,1);
if ((x<160)&&(y>240)&&(y<480))
B(x,y,3,1);
if ((x>160)&&(y>120)&&(y<240)&&(x<320))
B(x,y,2,2);
if ((x>320)&&(y>120)&&(y<240)&&(x<640))
B(x,y,2,3);
if ((x>160)&&(x<320)&&(y>240)&&(y<480))
B(x,y,3,2);
if ((x>320)&&(x<640)&&(y>240)&&(y<480))
B(x,y,3,3);
setcolor(15); رنگ به حالت پیش فرض در آید
}
RULE(); پس از هر کلیک؛ چک می کند آیا کسی برنده شده است یا خیر
}
exit(0);
}