سلام دوستان بازی تتریس که می دونید چیه؟
من این کد رو نوشتم ولی چون دور شکلا صفره هر دفعه دورشو پاک می کنه .اگه می شه برای این مشکلش یه راهنماییم کنید.فقط همینشو می خوام.بقیه ی بازی کاری نداره خیلی ممنون.(برنامه با توربو انجام می شه)
کد:
#include<conio.h>
#include<stdio.h>
#include<dos.h>
#include<stdlib.h>
int t=1,k,lk,s[7][4][4],shekl[4][4],safhe[41][10],x=5,y=40,m=0,taraf=0,reside,paeen;
unsigned short int far *screen=(unsigned short int far*) 0xb8000000;
void por(int i,int j,int color)
{
screen[i*80+j]=219+256*color;
}
void sheklgozar()
{
for(int i=0;i<4;i++)
for(int j=38;j<42;j++)
if(1)
safhe[i+m][j-36+taraf]=shekl[i][j-38];
}
void charkhesh(int jehat)
{
int matris[4][4];
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
if(jehat==1)
matris[i][3-j]=shekl[j][i];
else
matris[3-i][j]=shekl[j][i];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
shekl[i][j]=matris[i][j];
}
int sheklejadid()
{
randomize();
return rand()%7;
}
void sheklha()
{
int t=sheklejadid();
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
shekl[j][i]=s[t][i][j];
charkhesh(1);
sheklgozar();
}
void pakkon()
{
for (int i=0;i<10;i++)
safhe[m-1][i]=0;
}
void safhekesh()
{
for(int i=0;i<40;i++)
for(int j=0;j<10;j++)
por(i,j+35,safhe[i][j]);
}
void jadid()
{
for(int i=0;i<50;i++)
for(int j=0;j<80;j++)
if (j<35||j>44||i>39)
por(i,j,7);
else
{
por(i,j,0);
safhe[i][j-35]=0;
}
}
void main()
{
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
{
if (j!=1)
s[0][i][j]=0;
else
s[0][i][j]=9;
if((j==1&&i!=3)||(i==2&&j==2))
s[1][i][j]=10;
else
s[1][i][j]=0;
if((j==2&&i!=3)||(i==2&&j==1))
s[2][i][j]=11;
else
s[2][i][j]=0;
if(i==0||i==3||j==0||j==3)
s[3][i][j]=0;
else
s[3][i][j]=12;
if((i==1&&j>1)||(i==2&&j>0&&j<3))
s[4][i][j]=13;
else
s[4][i][j]=0;
if((i==2&&j!=3)||(i==1&&j==1))
s[5][i][j]=14;
else
s[5][i][j]=0;
if((i==1&&j<2)||(i==2&&j>0&&j<3))
s[6][i][j]=15;
else
s[6][i][j]=0;
}
clrscr();
_setcursortype(_NOCURSOR);
int level=1;
jadid();
while(t)
{
m=reside=taraf=0;
sheklha();
while(t&&!reside)
{
sheklgozar();
safhekesh();
paeen=0;
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
if(shekl[i][j]!=0)
paeen=i;
m++;
if(m+paeen!=40)
pakkon();
int x,y,q;
delay(100);
k=0;
while(kbhit())
{
k=getch();
if(k==0||k==0xE0)
k=(char)getch;
}
if(k==27)
t=0;
if(k==75)
taraf--;
// case 80:
// if (x==49)
// x=0;
// else
// x++;
// break;
if (k==77)
taraf++;
if(k==73)
charkhesh(1);
if(k==81)
charkhesh(2);
if(m+paeen==40)
reside=1;
}
}
gotoxy(35,25);
int emtiaz;
printf("game over.your score:%d", emtiaz);
getch();
}