ddtan90 Admin
Tổng số bài gửi : 178 Join date : 30/12/2010 Age : 33 Đến từ : SE 3 - K34
| Tiêu đề: Game Puzzle 15 ô Sat Jan 08, 2011 12:11 am | |
| mình có làm thử một cái chương trình giống như của bạn nhưng mà 4x4 chứ khong phải 3x3. Nhưng mà cũng tương tự vậy hà. Mình chưa biết nhiều về chế độ đồ họa trong c nên mình chỉ làm trong chế độ text thôi. Vì kinh nghiệm còn yếu nên hơi dài..... Cách chơi, các bạn dùng các phím a,s,w, d để điều khiển. Chổ 4 phím mũi tên để chơi bạn sửa lại (a->75, d->77, w->72, s->80) để thay bằng 4 phim smuix tên trên bàn phím. Dưới đây là code, các bạn biên dịch bằng Turbo C - Code:
-
//Game Pluzzle 16 o so //ddtan90 #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <dos.h> struct time t; typedef struct data { int so[4][4]; int xr,yr; }; void khoitao (data &mang) { int i,j,n=1; for (i=0;i<4;i++) for (j=0;j<4;j++){ mang.so[i][j]=n; n++;} mang.so[3][3]=0; mang.xr=mang.yr=3; } void veso (data mang){ int x,y; for (y=0;y<=3;y++) for (x=0;x<=3;x++){ gotoxy(35+5*x,10+2*y); if (mang.so [y][x]!=0) printf("%2d",mang.so[y][x]);//fai la [y][x] vi mang dc doc tu tren xuong duoi, trai sang fai else printf(" "); } gotoxy(80,25); } int hoanthanh (data mang) { int i,j,n=1,ok=1; for (i=0;i<4;i++) for (j=0;j<4;j++){ if (i!=3 && j!= 3) if (mang.so[i][j]!=n) {ok=0;return ok;} n++;} return (ok && mang.so[3][3]==0); }
void vekhung (){//ve khung 4x4 printf("\n\t\t\t *******************************"); printf("\n\t\t\t * .: :. *"); printf("\n\t\t\t%c .:: PLUZZLE ::. %c",17,16); printf("\n\t\t\t * -o0o- *"); printf("\n\t\t\t *******************************\n"); printf("\t\t\t Copyright %c 2009 %c%co Duy T%cn\n\n",184,209,133,131); printf("\t\t\t\tÉÍÍÍÍËÍÍÍÍËÍÍÍÍËÍÍÍÍ»"); printf("\n\t\t\t\tº º º º º"); printf ("\n\t\t\t\tÌÍÍÍÍÎÍÍÍÍÎÍÍÍÍÎÍÍÍ͹"); printf("\n\t\t\t\tº º º º º"); printf ("\n\t\t\t\tÌÍÍÍÍÎÍÍÍÍÎÍÍÍÍÎÍÍÍ͹"); printf("\n\t\t\t\tº º º º º"); printf ("\n\t\t\t\tÌÍÍÍÍÎÍÍÍÍÎÍÍÍÍÎÍÍÍ͹"); printf("\n\t\t\t\tº º º º º"); printf("\n\t\t\t\tÈÍÍÍÍÊÍÍÍÍÊÍÍÍÍÊÍÍÍͼ"); printf("\n\n\t\t\tDung cac phim A, S, D, W de choi, T de thoat!"); }//vekhung
void trai (data &mang){ if (mang.xr!=3) { mang.so[mang.yr][mang.xr]=mang.so[mang.yr][mang.xr+1]; mang.so[mang.yr][mang.xr+1]=0; mang.xr++; } } void phai (data &mang){// if (mang.xr!=0){ mang.so[mang.yr][mang.xr]=mang.so[mang.yr][mang.xr-1]; mang.so[mang.yr][mang.xr-1]=0; mang.xr--; } } void xuong (data &mang){ if (mang.yr!=0) { mang.so[mang.yr][mang.xr]=mang.so[mang.yr-1][mang.xr]; mang.so[mang.yr-1][mang.xr]=0; mang.yr--; } } void len (data &mang){ if (mang.yr!=3) { mang.so[mang.yr][mang.xr]=mang.so[mang.yr+1][mang.xr]; mang.so[mang.yr+1][mang.xr]=0; mang.yr++; } } void xaotron (data &mang,int n) { int i,r,c; for (i=1;i<=n*20;i++) { r=random(4); switch (r) { case 0: len(mang); break; case 2: xuong(mang); break; case 1: trai(mang); break; case 3: phai(mang);break; }//switch clrscr(); textcolor(8+random(8)); } } //printf("%c%co Duy T%cn\n",209,133,131); main (){ data mang; int i,j,buoc=0;char c,s; begin://diem moc de bat dau gettime(&t); clrscr(); khoitao(mang); xaotron(mang,t.ti_sec); vekhung(); //phai(mang);phai(mang);phai(mang); veso(mang); while (1){ c=getch(); switch (c) { case 'a': trai(mang);break; case 's': xuong(mang);break; case 'd': phai(mang);break; case 'w': len(mang);break; case 't': exit(1); }//switch if (c=='a' ||c=='s' ||c=='w' ||c=='d') buoc++; veso(mang); gotoxy(5,21);printf("\nSo buoc da di chuyen la: %3d",buoc); if (hoanthanh(mang)) { gotoxy(5,21); printf("\a\t\t****Chuc mung ban da chien thang!****\nTong so lan di chuyen la: %3d",buoc); replay://diem bat dau kiem tra nhap choi lai hay thoat printf("\n\nNhan phim 'R' de choi lai hoac nhan phim 'T' de thoat!"); s=getch(); switch (s) { case 'R': case 'r': goto begin; break; case 'T': case 't': exit(1); break; default: goto replay; } //switch } gotoxy(80,25); }//while }
| |
|