hadi_assassin
سه شنبه 10 بهمن 1391, 12:55 عصر
سلام دوستان. من برنامه بازی snake رو بصورت ساده و غیر گرافیکی نوشتم. گفتم اینجا بذارمش شاید به درد شما بخوره....
لطفا اگه ایرادی در سورس مشاهده کردین بهم اطلاع بدین.
#include <conio.h>
#include <stdio.h>
#include <dos.h>
int main()
{
char m='d',t='d',t0='d';
int X[50],Y[50],j,i=10,l=0,f=1,k=200,h;
for (j=1;j<=i;j++)
{
X[j]=j+1;
Y[j]=1;
}
while(f)
{
f=0;
X[0]=rand();
Y[0]=rand();
X[0]=X[0]%20+1;
Y[0]=Y[0]%20+1;
for(j=1;j<=i;j++)
if(X[j]==X[0] && Y[j]==Y[0]) f++;
}
f=1;
while (i<25)
{
for(j=1;j<i-1;j++)
if(X[i]==X[j] && Y[i]==Y[j])
{
l=1;
break;
}
if(l==1) break;
if (kbhit())
{
m=getch();
if(m==80) m='s';
if(m==75) m='a';
if(m==77) m='d';
if(m==72) m='w';
if(m=='d')
if(t!='a') t=m;
if(m=='a')
if(t!='d') t=m;
if(m=='w')
if(t!='s') t=m;
if(m=='s')
if(t!='w') t=m;
}
clrscr();
gotoxy(1,21);
for (j=0;j<21;j++) printf("_");
for (j=0;j<21;j++)
{
gotoxy(21,j+1);
printf("|");
}
for (j=0;j<=i;j++)
{
X[j]=X[j]%20;
Y[j]=Y[j]%20;
if(X[j]==0) X[j]=20;
if(Y[j]==0) Y[j]=20;
gotoxy(X[j],Y[j]);
printf("*");
}
if (kbhit())
{
m=getch();
if(m==80) m='s';
if(m==75) m='a';
if(m==77) m='d';
if(m==72) m='w';
if(m=='d')
if(t!='a') t=m;
if(m=='a')
if(t!='d') t=m;
if(m=='w')
if(t!='s') t=m;
if(m=='s')
if(t!='w') t=m;
}
switch(t){
case 'd':
for(j=1;j<i;j++)
{
X[j]=X[(j+1)];
Y[j]=Y[(j+1)];
}
X[i]++;
if(X[i]==X[0] && Y[i]==Y[0])
{
i++;
X[i]=X[0];
Y[i]=Y[0];
while(f)
{
f=0;
srand(time(0));
X[0]=rand();
srand(time(0));
Y[0]=rand();
X[0]=X[0]%20+1;
Y[0]=Y[0]%20+1;
for(j=1;j<=i;j++)
if(X[j]==X[0] && Y[j]==Y[0]) f++;
}
f=1;
}
for(j=0;j<500*k;j++)
for(h=0;h<2000;h++);
break;
case 'a':
for(j=1;j<i;j++)
{
X[j]=X[(j+1)];
Y[j]=Y[(j+1)];
}
X[i]--;
if(X[i]==X[0] && Y[i]==Y[0])
{
i++;
X[i]=X[0];
Y[i]=Y[0];
while(f)
{
f=0;
srand(time(0));
X[0]=rand();
srand(time(0));
Y[0]=rand();
X[0]=X[0]%20+1;
Y[0]=Y[0]%20+1;
for(j=1;j<=i;j++)
if(X[j]==X[0] && Y[j]==Y[0]) f++;
}
f=1;
}
for (j=0;j<500*k;j++)
for(h=0;h<2000;h++);
break;
case 's':
for(j=1;j<i;j++)
{
X[j]=X[(j+1)];
Y[j]=Y[(j+1)];
}
Y[i]++;
if(X[i]==X[0] && Y[i]==Y[0])
{
i++;
X[i]=X[0];
Y[i]=Y[0];
while(f)
{
f=0;
srand(time(0));
X[0]=rand();
srand(time(0));
Y[0]=rand();
X[0]=X[0]%20+1;
Y[0]=Y[0]%20+1;
for(j=1;j<=i;j++)
if(X[j]==X[0] && Y[j]==Y[0]) f++;
}
f=1;
}
for(j=0;j<500*k;j++)
for(h=0;h<2000;h++);
break;
case 'w':
for(j=1;j<i;j++)
{
X[j]=X[(j+1)];
Y[j]=Y[(j+1)];
}
Y[i]--;
if(X[i]==X[0] && Y[i]==Y[0])
{
i++;
X[i]=X[0];
Y[i]=Y[0];
while(f)
{
f=0;
srand(time(0));
X[0]=rand();
srand(time(0));
Y[0]=rand();
X[0]=X[0]%20+1;
Y[0]=Y[0]%20+1;
for(j=1;j<=i;j++)
if(X[j]==X[0] && Y[j]==Y[0]) f++;
}
f=1;
}
for(j=0;j<500*k;j++)
for(h=0;h<2000;h++);
break;
}
}
if(i==25)
{
clrscr();
printf("*****************************\nYOU ARE VICTORIOUS\n*****************************");
}
if (l==1) printf("YOU LOSE!");
sleep(1);
getch();
return 0;
}
لطفا اگه ایرادی در سورس مشاهده کردین بهم اطلاع بدین.
#include <conio.h>
#include <stdio.h>
#include <dos.h>
int main()
{
char m='d',t='d',t0='d';
int X[50],Y[50],j,i=10,l=0,f=1,k=200,h;
for (j=1;j<=i;j++)
{
X[j]=j+1;
Y[j]=1;
}
while(f)
{
f=0;
X[0]=rand();
Y[0]=rand();
X[0]=X[0]%20+1;
Y[0]=Y[0]%20+1;
for(j=1;j<=i;j++)
if(X[j]==X[0] && Y[j]==Y[0]) f++;
}
f=1;
while (i<25)
{
for(j=1;j<i-1;j++)
if(X[i]==X[j] && Y[i]==Y[j])
{
l=1;
break;
}
if(l==1) break;
if (kbhit())
{
m=getch();
if(m==80) m='s';
if(m==75) m='a';
if(m==77) m='d';
if(m==72) m='w';
if(m=='d')
if(t!='a') t=m;
if(m=='a')
if(t!='d') t=m;
if(m=='w')
if(t!='s') t=m;
if(m=='s')
if(t!='w') t=m;
}
clrscr();
gotoxy(1,21);
for (j=0;j<21;j++) printf("_");
for (j=0;j<21;j++)
{
gotoxy(21,j+1);
printf("|");
}
for (j=0;j<=i;j++)
{
X[j]=X[j]%20;
Y[j]=Y[j]%20;
if(X[j]==0) X[j]=20;
if(Y[j]==0) Y[j]=20;
gotoxy(X[j],Y[j]);
printf("*");
}
if (kbhit())
{
m=getch();
if(m==80) m='s';
if(m==75) m='a';
if(m==77) m='d';
if(m==72) m='w';
if(m=='d')
if(t!='a') t=m;
if(m=='a')
if(t!='d') t=m;
if(m=='w')
if(t!='s') t=m;
if(m=='s')
if(t!='w') t=m;
}
switch(t){
case 'd':
for(j=1;j<i;j++)
{
X[j]=X[(j+1)];
Y[j]=Y[(j+1)];
}
X[i]++;
if(X[i]==X[0] && Y[i]==Y[0])
{
i++;
X[i]=X[0];
Y[i]=Y[0];
while(f)
{
f=0;
srand(time(0));
X[0]=rand();
srand(time(0));
Y[0]=rand();
X[0]=X[0]%20+1;
Y[0]=Y[0]%20+1;
for(j=1;j<=i;j++)
if(X[j]==X[0] && Y[j]==Y[0]) f++;
}
f=1;
}
for(j=0;j<500*k;j++)
for(h=0;h<2000;h++);
break;
case 'a':
for(j=1;j<i;j++)
{
X[j]=X[(j+1)];
Y[j]=Y[(j+1)];
}
X[i]--;
if(X[i]==X[0] && Y[i]==Y[0])
{
i++;
X[i]=X[0];
Y[i]=Y[0];
while(f)
{
f=0;
srand(time(0));
X[0]=rand();
srand(time(0));
Y[0]=rand();
X[0]=X[0]%20+1;
Y[0]=Y[0]%20+1;
for(j=1;j<=i;j++)
if(X[j]==X[0] && Y[j]==Y[0]) f++;
}
f=1;
}
for (j=0;j<500*k;j++)
for(h=0;h<2000;h++);
break;
case 's':
for(j=1;j<i;j++)
{
X[j]=X[(j+1)];
Y[j]=Y[(j+1)];
}
Y[i]++;
if(X[i]==X[0] && Y[i]==Y[0])
{
i++;
X[i]=X[0];
Y[i]=Y[0];
while(f)
{
f=0;
srand(time(0));
X[0]=rand();
srand(time(0));
Y[0]=rand();
X[0]=X[0]%20+1;
Y[0]=Y[0]%20+1;
for(j=1;j<=i;j++)
if(X[j]==X[0] && Y[j]==Y[0]) f++;
}
f=1;
}
for(j=0;j<500*k;j++)
for(h=0;h<2000;h++);
break;
case 'w':
for(j=1;j<i;j++)
{
X[j]=X[(j+1)];
Y[j]=Y[(j+1)];
}
Y[i]--;
if(X[i]==X[0] && Y[i]==Y[0])
{
i++;
X[i]=X[0];
Y[i]=Y[0];
while(f)
{
f=0;
srand(time(0));
X[0]=rand();
srand(time(0));
Y[0]=rand();
X[0]=X[0]%20+1;
Y[0]=Y[0]%20+1;
for(j=1;j<=i;j++)
if(X[j]==X[0] && Y[j]==Y[0]) f++;
}
f=1;
}
for(j=0;j<500*k;j++)
for(h=0;h<2000;h++);
break;
}
}
if(i==25)
{
clrscr();
printf("*****************************\nYOU ARE VICTORIOUS\n*****************************");
}
if (l==1) printf("YOU LOSE!");
sleep(1);
getch();
return 0;
}