Thứ Sáu, 6 tháng 3, 2015

Game of life ngôn ngữ lập trình C ( game of life in C)


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

Game of life hay còn gọi là Life (Cuộc sống) là bài toán thuộc lĩnh vực cellcular automaton được đưa ra bởi John Horton Conway vào năm 1970.

Đâ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