PDA

View Full Version : سوال: بازي مار



m_baranmr
پنج شنبه 12 دی 1392, 12:57 عصر
سلام . من كد بازي مار و با كلاس نوشتم .فقط وقتي بازي انجام ميشه با زدن دكمه ها براي حركت بازي قطع ميشه كسي ميتونه بگه مشكلش چيه

#include<conio.h>
#include<iostream>
#include<Windows.h>
#include<time.h>
using namespace std;
class set
{
public:
set()
{
rear=-1;
food1=0;
Front=0;
Lenght=160;
Score=0;
x=6;
y=17;
for(int i=0;i<12;i++)
for(int j=0;j<35;j++)
tabel[i][j]=' ';
tabel [7][11]='*';
tabel [7][12]='*';
}
void divar()
{
for(int i=0;i<10;i++)
{
int row=clock()%12;
int col=clock()%35;
tabel[row][col]='#';
Sleep(100);
}
}
void print()
{
system("cls");
cout<<"\n";
for(int i=0;i<12;i++)
{
cout<<" ";
for(int j=0;j<35;j++)
cout<<tabel[i][j];
cout<<"\n";
}
}
void removee(int a,int b)
{
tabel[a][b]='.';
cout<<tabel[a][b];
}
void reward()
{
while(1)
{
srand(time(0));
int n=clock()%12;
int m=clock()%35;
if(tabel[n][m]==' ')
{
tabel[n][m]='o';
cout<<tabel[n][m];
break;
}
}
}
void sleep()
{
Sleep(Lenght);
}
protected:
char tabel[12][35];
int rear;
int food1;
int Front;
int Lenght;
int Score;
int x;
int y;
};
/*class food:public set
{
protected:
food(){}
void reward()
{
while(1)
{
srand(time(0));
int n=clock()%12;
int m=clock()%35;
if(tabel[n][m]==' ')
{
tabel[n][m]='o';
cout<<tabel[n][m];
break;
}
}
}
};*/

class snake:public set
{
public:
snake(){}
snake(int x, int y)
{
rear++;
item[rear][0]=x;
item[rear][1]=y;
}
void add(int a, int b)
{
if(a>11)
a=0;
if(a<0)
a=11;
if(b>34)
b=0;
if(b<0)
b=34;
x=a;
y=b;
snake(a,b);
if(tabel[a][b]!=' ' && tabel[a][b]!='#')
{
if(tabel[a][b]=='o')
{
cout<<"\a";
food1++;
if(food1==10)//New Level
{
cout<<"\a";
Lenght-=50;
food1=0;
int ROW=clock()%12;
int COL=clock()%35;
tabel[ROW][COL]='#';
}
Score+=10;
reward();
tabel[a][b]='*';
cout<<tabel[a][b];
return;
}
tabel[a][b]='*';
cout<<tabel[a][b];

int EndX=item[Front][0];
int EndY=item[Front][1];
Front++;
removee(EndX,EndY);
}
else
{
cout<<"\a";
system("cls");
printf("Your Score Is:%d",Score);
getch();
exit(1);
}
}
protected:
int item[10000][2];

};
class siting:public set
{
public:
siting()
{
system("cls");
cout<<"Please Enter Amount Of Difficultly:\n1)Very Hard\n2)Hard\n3)Normal\n4)Easy\n5)Very Easy";
cin>>c;;
Lenght=50*c;
}
protected:
int c;
};
class hold:public snake
{
public:
hold()
{
if(kbhit())
{
c=getch();
if(c=='w')
Dir=1;
else if(c=='s')
Dir=3;
else if(c=='a')
Dir=2;
else if(c=='d')
Dir=0;
}
}
void action()
{
if(Dir==0)
add(x,++y);
else if(Dir==1)
add(--x,y);
else if(Dir==2)
add(x,--y);
else if(Dir==3)
add(++x,y);
}
protected:
char c;
int Dir;
};
void main()
{
char MENU;
while(1)
{
system("cls");
printf("\n \\_________________1)Start Game__________________/");
printf("\n \\________________2)Settings___________________/");
printf("\n \\_______________3)Exit Game_________________/");
MENU=getch();
if(MENU=='1')
break;
else if(MENU=='2')
siting t;
else if(MENU=='3')
exit(0);
}
//Start Of Game:
set n;
snake k(7,11);
snake k2(7,12);
n.divar();
n.reward();
n.print();
while(1)
{
n.sleep();
hold m;
m.action();
}
}