Game of life ngôn ngữ lập trình C ( game of life in C)
các bạn tải sẵn code và chương trình sẵn về game of life TẠI ĐÂY
Đây là một trò chơi mà không có người chơi. Sự tiến hóa của trò chơi được xác định bởi trạng thái ban đầu, và không cần thêm đầu vào nữa.
Là mạng lưới các ô (tế bào) tạo nên một không gian hai chiều không giới hạn. Trạng thái của ô: sống hoặc chết. Mỗi tế bào sẽ tương tác với tám hàng xóm (tế bào liền kề). Trạng thái tiếp theo của ô được quyết định theo quy tắc:
1. Ô đang sống mà có ít hơn hai hàng xóm đang sống sẽ chết
2. Ô đang sống mà có nhiều hơn 3 hàng xóm đang sống sẽ chết
3. Ô đang sống mà có 2 hoặc 3 hàng xóm đang sống sẽ tiếp tục sống
4. Ô chết mà có đúng 3 hàng xóm đang sống sẽ chuyển thành ô sống
Mẫu ban đầu là mầm của hệ thống.
đọc thêm về game of life tại ĐÂY
code:
#include <stdio.h>
#include <stdlib.h>
int xoa(char a[27][82],int x,int y);
int in(char a[27][82],int x,int y);
void menu();
int main(int argc, char *argv[]) {
char a[27][82],b[27][82],c[27][82],d[2]={32,4};
int i,j,k,t;
//reload screen
for(i=0;i<27;i++) for (j=0;j<82;j++) a[i][j]=d[0] ;
MENU:
system("cls");
menu();
scanf("%d",&k);
switch(k){
case 1:
a[2][1] = a[3][2] = a[1][3] = a[2][3] = a[3][3] = d[1];
break;
case 2:
a[7][43] = a[8][42] = a[8][43] = a[8][44] = a[9][42] = a[9][44] = a[10][43] = d[1];
break;
case 3:
a[10][41] = a[10][43] = a[10][45] = a[11][41] = a[11][45] = a[12][41] = a[12][45] = a[13][41] = a[13][45] = a[14][41] = a[14][43] = a[14][45] = d[1];
break;
case 4:
a[5][4] = a[5][5] = a[5][6] = a[5][7] = a[5][8] = a[5][9] = a[5][10] = a[5][11] = a[5][12] = a[5][13] = d[1];
break;
case 5:
a[11][2] = a[11][3] = a[11][4] = a[11][5] = a[12][1] = a[12][5] = a[13][5] = a[14][1] = a[14][4] = d[1];
break;
case 6:
a[7][39] = a[7][40] = a[7][42] = a[7][43] = a[8][39] = a[8][40] = a[8][42] = a[8][43] = a[9][40] = a[9][42] = a[10][38] = a[10][40] = a[10][42] = a[10][44] = a[11][38] = a[11][40] = a[11][42] = a[11][44] = a[12][38] = a[12][39] = a[12][43] = a[12][44] = d[1];
break;
case 7:
a[6][2]=a[7][2]=a[6][3]=a[7][3]=a[6][12]=a[7][12]=a[8][12]=a[5][13]=a[9][13]=a[4][14]=a[10][14]=a[4][15]=a[10][15]=a[7][16]=a[5][17]=a[9][17]=a[6][18]=a[7][18]=a[8][18]=a[7][19]=a[4][22]=a[5][22]=a[6][22]=a[4][23]=a[5][23]=a[6][23]=a[3][24]=a[7][24]=a[2][26]=a[3][26]=a[7][26]=a[8][26]=a[4][36]=a[5][36]=a[4][37]=a[5][37]= d[1];
break;
default:
goto MENU;
}
printf("Chon speed - millisecond: ");
scanf("%d",&t);
//in mang a
for(i=1;i<=24;i++) {
for (j=1;j<=79;j++) printf("%c",a[i][j]);
printf("\n");
}
RUN:
while (!kbhit()){
//xoa man hinh
system("cls");
//reload mang b
for(i=0;i<27;i++) for (j=0;j<82;j++) b[i][j]=d[0];
//tim vi tri chet
for(i=1;i<=25;i++) for (j=1;j<=79;j++) if ((a[i][j] == d[1]) && (xoa(a,i,j)!= 2) && xoa(a,i,j)!= 3) b[i][j] = d[1];
//reload mang c
for(i=0;i<27;i++) for (j=0;j<82;j++) c[i][j]=d[0];
//tim vi tri song
for(i=1;i<=25;i++) for (j=1;j<=79;j++) if ((a[i][j] == d[0] ) && (in(a,i,j)== 3))c[i][j] = d[1];
//kill vi tri chet
for(i=1;i<=25;i++) for (j=1;j<=79;j++) if (b[i][j]==d[1]) a[i][j] = d[0];
//khoi phuc vi tri song
for(i=1;i<=25;i++) for (j=1;j<=79;j++) if (c[i][j]== d[1]) a[i][j] = d[1];
//in mang a
for(i=1;i<=24;i++) {
for (j=1;j<=79;j++) printf("%c",a[i][j]);
printf("\n");
}
Sleep(t);
}
printf("M = thoat ra menu,R = reset roi thoat ra menu, K = ket thuc : ");
k=getch();
k=getch();
switch(k){
case 109:
goto MENU;
case 114:
for(i=0;i<27;i++) for (j=0;j<82;j++) a[i][j]=d[0] ;
goto MENU;
case 107:
break;
default:
goto RUN;
}
return 0;
}
void menu() {
printf(" ----------------------GAME OF LIFE CUA PHAM TUAN NGOC----------------------\n\n1. Glider \n2. Small Exploder \n3. Exploder\n4. 10 Cell Row\n5. Lightweight Spaceship\n6. Tumbler \n7. Gosper Glider Gun\n\nChon 1 hinh phia tren theo so: ");
}
//khai bao function xoa
int xoa(char a[27][82],int x,int y){
int i,j,k,t=-1;
for (i=x-1;i<=x+1;i++) for (j=y-1;j<=y+1;j++){
//vong lenh swich-case xuyen goc man hinh
switch(i){
case 0:
if (a[x][y] == a[25][j]) t=t+1;
break;
case 26:
if (a[x][y] == a[1][j]) t=t+1;
break;
}
switch(j){
case 0:
if (a[x][y] == a[i][79]) t=t+1;
break;
case 80:
if (a[x][y] == a[i][1]) t=t+1;
break;
default:
if (a[x][y] == a[i][j]) t=t+1;
}
}
return t;
}
//khai bao function in
int in(char a[27][82],int x,int y){
int i,j,k,t=0;
for (i=x-1;i<=x+1;i++) for (j=y-1;j<=y+1;j++) {
//vong lenh swich-case xuyen goc man hinh
switch (i){
case 0:
if (a[x][y] != a[25][j]) t=t+1;
break;
case 26:
if (a[x][y] != a[1][j]) t=t+1;
break;
}
switch (j){
case 0:
if (a[x][y] != a[i][79]) t=t+1;
break;
case 80:
if (a[x][y] != a[i][1]) t=t+1;
break;
default:
if (a[x][y] != a[i][j]) t=t+1;
}
}
return t;
}
chúc các bạn vui vẻ :
Không có nhận xét nào:
Đăng nhận xét