عنوان پروژه

 سورس مار Snake سی پلاس

توضیحات :

کمتر کسی را خواهید یافت که با بازی ما یا اسنیک خاطره نداشته باشد و یا این بازی را بازی نکرده باشد، بازی اسنیک را می توان معروفترین و پر طرفدارترین بازی در دهه ی گذشته دانست که حتی امروزه هم به اشکال گرافیکی تر در بازارهای بازی موبایلی سیستم عامل های مختلف موجود است

امروز می خواهیم نحوه ی پیاده سازی بازی اسنیک را در با هم بررسی کنیم

در بازی اسنیک سعی شده است نهایت سادگی در کدها رعایت شود تا با کمترین زمانی که برای آن می گذارید بتوانید به راحتی سورس کد بازی اسنیک را  بفهمید و با سلیقه ی خودتان تغییرات مدنظرتان را اعمال کنید.

در سورس کد بازی اسنیک سعی شده است با پیغام های مختلف بازی کننده را در لذت یک بازی واقعی شریک کرد و هدفی غیر از ایجاد ذهنیت مثبت و شاد کردن بازی کننده نبوده است.

در سورس کد بازی مار از توابع گرافیکی برای ایجاد مار یا اصطلاحا عمو اسنیک استفاده نشده است و اسنیک ما توسط چندین خط که به هم وصل شده اند ایجاد شده است و همانطور که خواهید دید هدف کلی این برنامه ایجاد ذهنیت و درک الگوریتم این بازی محبوب بوده است و هدف تجاری سازی و سایر مسایل در بین نبوده است و شما می توانید با الحام از این برنامه ، بازی های خوبی را در حد بازی های تجاری بسازید

نوع فایل

فرمت

سورس زبان سی پلاس پلاس

CPP , EXE

پیش نمایش از سورس کد پروژه

#include <stdio.h>
#include<dos.h>
#include<conio.h>
#include<bios.h>
#include<graphics.h>
#include<stdlib.h>
#include<iostream.h>
int choice;
int players;
int xin;
int go;
int temp1,temp2;
int bouns=0;
int appcount=1;
int score=0;
int score2=0;
int flag=3;
int flag2=8;
int radius = 5;
int snake=100;
int snake2=100;
int color=14;
int counter1=0;
int counter2=0;
class node{
public :
int a;
int b;
node(void){a=0;b=0;}
};
node s[5000];
node s2[5000];
node app[1];
node bons[1];
void setscore(void);
void setscore2(void);
void start(void);

int check3(int y,int z)
{
for (int i=0;i<counter1;i++)
{
if((s[i].a>z-10 && s[i].a<z+10) && (s[i].b>y-10 && s[i].b<y+10))
return 0;
if(players==2)
if((s[i].a>z-10 && s[i].a<z+10) && (s[i].b>y-10 && s[i].b<y+10))
return 0;
}
return 1;
}

int check4(int y,int z)
{
for (int i=0;i<counter1;i++)
if((s[i].a>z-10 && s[i].a<z+10) && (s[i].b>y-10 && s[i].b<y+10))
return 0;
if(s[0].a==bons[0].a || s[0].b==bons[0].b)
return 0;
return 1;
}
void drawbouns(int color)
{
setcolor(color);
circle(bons[0].b,bons[0].a,6);
circle(bons[0].b,bons[0].a,5);
circle(bons[0].b,bons[0].a,4);
circle(bons[0].b,bons[0].a,3);
circle(bons[0].b,bons[0].a,7);
circle(bons[0].b,bons[0].a,8);
setcolor(14);
}

void setapp(void)
{
int x,y;
do{
do{randomize();x=(rand() % 500)+65;}while(x==app[0].b);
app[0].b=x;
do{randomize();y=(rand() % 340)+75;}while(x==app[0].a);
app[0].a=y;
}while(check3(app[0].b,app[0].a)==0);
setcolor(12);
circle(app[0].b,app[0].a,radius);
circle(app[0].b,app[0].a,radius+1);
circle(app[0].b,app[0].a,radius-1);
circle(app[0].b,app[0].a,radius-2);
circle(app[0].b,app[0].a,radius-3);
circle(app[0].b,app[0].a,radius-4);
}

void swap(int cas)
{
if(cas==1)
{
for (int i=0;i<counter1;i++)
{
s[i].a=s[i+1].a;
s[i].b=s[i+1].b;
}
}
else
{
for (int j=0;j<counter2;j++)
{
s2[j].a=s2[j+1].a;
s2[j].b=s2[j+1].b;
}
}
}
void gameover(void)
{
textcolor(4);
fflush(stdin);
if(players==2)
{
getch();
getch();
}
cleardevice();
setcolor(15);
if(players==2)
{
if(score>score2)outtextxy(245,150,”PLAYER ONE WINS”);
else outtextxy(245,150,”PLAYER TWO WINS”);
outtextxy(290,455,”player 1:”);
outtextxy(90,455,”player 2:”);
setscore();
setscore2();
}
outtextxy(270,170,”GAME OVER”);
outtextxy(330,470,”Far, projectgmailsas@yahoo.com”);
/*outtextxy(10,250,”This game may contain some errors, if u got any complains about this game “);
outtextxy(10,265,”plaese keep them for ur self other wise correct them by ur self,THANX”);*/
getch();
getch();
cleardevice();
//flag=5;
choice=1;
players=1;
start();
}
int midx = getmaxx() / 2;
int d[6]={0,0,0,0,0,0};

void firstscore(void)
{
setcolor(9);
outtextxy(290,455,”player 1:”);
if(players==2)outtextxy(90,455,”player 2:”);
}
void setscore()
{
int y=420,x=420;
int up=6;
int dum;
int k=0;
int div;
div=score;
do{
setcolor(16);
y=420;
for(int i=0;i<up;i++)
switch(d[i])
{
case 1:outtextxy(y,455,”1″);y-=9;break;
case 2:outtextxy(y,455,”2″);y-=9;break;
case 3:outtextxy(y,455,”3″);y-=9;break;
case 4:outtextxy(y,455,”4″);y-=9;break;
case 5:outtextxy(y,455,”5″);y-=9;break;
case 6:outtextxy(y,455,”6″);y-=9;break;
case 7:outtextxy(y,455,”7″);y-=9;break;
case 8:outtextxy(y,455,”8″);y-=9;break;
case 9:outtextxy(y,455,”9″);y-=9;break;
case 0:outtextxy(y,455,”0″);y-=9;break;
}
if(div/10>=1)
{
d[k]=div%10;
k++;
div=div/10;
}
else
{
d[k]=div;
div=div/10;
}
x=420;
setcolor(9);
for(i=0;i<up;i++)
switch(d[i])
{
case 1:outtextxy(x,455,”1″);x-=9;break;
case 2:outtextxy(x,455,”2″);x-=9;break;
case 3:outtextxy(x,455,”3″);x-=9;break;
case 4:outtextxy(x,455,”4″);x-=9;break;
case 5:outtextxy(x,455,”5″);x-=9;break;
case 6:outtextxy(x,455,”6″);x-=9;break;
case 7:outtextxy(x,455,”7″);x-=9;break;
case 8:outtextxy(x,455,”8″);x-=9;break;
case 9:outtextxy(x,455,”9″);x-=9;break;
case 0:outtextxy(x,455,”0″);x-=9;break;
}
}while(div>=1);
}
void setscore2()
{
int y=220,x=220;
int up=6;
int dum;
int k=0;
int div;
div=score2;
do{
setcolor(16);
y=220;
for(int i=0;i<up;i++)
switch(d[i])
{
case 1:outtextxy(y,455,”1″);y-=9;break;
case 2:outtextxy(y,455,”2″);y-=9;break;
case 3:outtextxy(y,455,”3″);y-=9;break;
case 4:outtextxy(y,455,”4″);y-=9;break;
case 5:outtextxy(y,455,”5″);y-=9;break;
case 6:outtextxy(y,455,”6″);y-=9;break;
case 7:outtextxy(y,455,”7″);y-=9;break;
case 8:outtextxy(y,455,”8″);y-=9;break;
case 9:outtextxy(y,455,”9″);y-=9;break;
case 0:outtextxy(y,455,”0″);y-=9;break;
}
if(div/10>=1)
{
d[k]=div%10;
k++;
div=div/10;
}
else
{
d[k]=div;
div=div/10;
}
x=220;
setcolor(9);
for(i=0;i<up;i++)
switch(d[i])
{
case 1:outtextxy(x,455,”1″);x-=9;break;
case 2:outtextxy(x,455,”2″);x-=9;break;
case 3:outtextxy(x,455,”3″);x-=9;break;
case 4:outtextxy(x,455,”4″);x-=9;break;
case 5:outtextxy(x,455,”5″);x-=9;break;
case 6:outtextxy(x,455,”6″);x-=9;break;
case 7:outtextxy(x,455,”7″);x-=9;break;
case 8:outtextxy(x,455,”8″);x-=9;break;
case 9:outtextxy(x,455,”9″);x-=9;break;
case 0:outtextxy(x,455,”0″);x-=9;break;
}
}while(div>=1);
}

void frame(void)
{
setcolor(15);
int x=620-30;
int y=470-30;//virtexs as shown below
rectangle(0+30,20+30,x,y);
rectangle(32,52,x-2,y-2);
outtextxy(150,2,”FA, projectgmailsas@yahoo.com”);
if(score==0 && score2==0)firstscore();
}

void check1(int y,int z,int st)
{
if(st==1)
{//open 1
for (int i=0;i<counter1-35;i++)
if((s[i].a>y-10 && s[i].a<y+10) && (s[i].b>z-10 && s[i].b<z+10) )
{//open 2
score2+=500;
gameover();
return;
}//close 2
}//close 1
if(st==2)
{//open 3
for (int i=0;i<counter2-35;i++)
if((s2[i].a>y-10 && s2[i].a<y+10) && (s2[i].b>z-10 && s2[i].b<z+10))
{//open 4
score+=500;
gameover();
return;
}//clse 4
}//close 3

}

======