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ẻ :

8 nhận xét:

  1. Nhận xét này đã bị tác giả xóa.

    Trả lờiXóa
  2. 123bet mang đến trải nghiệm cá cược trực tuyến an toàn, giao diện dễ dùng cùng nhiều trò chơi hấp dẫn. Đăng ký nhanh, nạp rút tiện lợi và nhận ưu đãi mỗi ngày dành cho thành viên mới.
    Website: https://123bett.io/
    Địa chỉ: 86-549 Đ. Vĩnh Khánh, Khánh Hội, Hồ Chí Minh, Vietnam
    Điện thoại: 0938493847
    Email: 123bettio@gmail.com
    Hashtag: #123bet #123betoi #game123bet #trangchu123bet #link123bet

    Trả lờiXóa
  3. Hitclub là cổng game bài đổi thưởng đỉnh cao châu Á. Sân chơi uy tín với tỷ lệ nạp rút 1:1 siêu tốc, hệ thống chăm sóc khách hàng chuyên nghiệp hoạt động 24/7.
    Website: https://hitclub1.dev/
    Địa chỉ: 2 Trần Khắc Chân, Tân Định, Hồ Chí Minh, Vietnam
    Điện thoại: 0938938293
    Email: hitclub1dev@gmail.com
    Hashtag: #hitclub #hitclub1dev #taiapphitclub #apphitclub #trangchuhitclub

    Trả lờiXóa
  4. Vn88 cập nhật link vào mới nhất không bị chặn. Đăng ký tài khoản ngay hôm nay để trải nghiệm kho game đổi thưởng phong phú từ bắn cá, slot game đến các giải đấu thể thao đỉnh cao toàn cầu.
    Website: https://vn88.rehab/
    Địa chỉ: Hẻm 764 Phạm Văn Chiêu, Phường 15, Gò Vấp, Hồ Chí Minh, Việt Nam
    Điện thoại: 0383 033 149
    Email: vn88rehab@gmail.com
    Hashtag: #vn88 #vn88rehab #trangchuvn88 #linkvn88 #taivn88

    Trả lờiXóa
  5. Đăng ký tài khoản 789Club cá cược thả ga, nhận ngay code 50k trải nghiệm game bài, nổ hũ độc quyền. Hệ thống nạp rút tự động siêu tốc 1:1, hỗ trợ người chơi 24/7. Tham gia ngay!
    Website: https://kgsr.cn.com/
    Địa chỉ: 19 Nguyễn Tuân, Phường Thanh Xuân, Hà Nội, 100000, Việt Nam
    Điện thoại: 0974 744 788
    Email: 789clubb@gmail.com
    Hashtag: #789clubweb #789clubios #789clubtaixiu #tai789club #789clubandroid #789clubapk #game789club #789clubgame #789clubconggamedoithuong #taigame789club apk #gamebai789club #taigame789clubios #789clubdoithuong24/7 #bet789club

    Trả lờiXóa
  6. vin777 cung cấp link truy cập chính thức không bị chặn cùng hệ thống bảo mật tuyệt đối. Đăng ký tài khoản hôm nay để nhận ngay code tân thủ trải nghiệm các siêu phẩm nổ hũ, bắn cá cực hấp dẫn.
    Website: https://vin777.porn/
    Địa chỉ: 91, 41/12 Đ. T8, Tây Thạnh, Hồ Chí Minh 700000, Vietnam
    Điện thoại: 0928 378 973
    Email: vin777.porn@gmail.com
    Hashtag: #vin777 #vin777porn #trangchuvin777 #nhacaivin777 #linktaivin777

    Trả lờiXóa
  7. Vin777 cap nhat link vao trang chu moi nhat khong bi chan boi cac nha mang. Tham gia ca cuoc the thao, no hu, ban ca va song bai truc tuyen voi giao dien muot ma va he thong bao mat an toan tuyet doi.
    Website: https://vin777.gripe/
    Dia chi: 102 D. T8, Tay Thanh, Ho Chi Minh, Vietnam
    Dien thoai: 0927 378 289
    Email: vin777gripe@gmail.com
    Hashtag: #vin777 #vin777gripe #trangchuvin777 #nhacaivin777 #linktaivin777

    Trả lờiXóa
  8. vin777 mang đến cho bạn không gian giải trí đỉnh cao với các sảnh casino, thể thao và bắn cá đẳng cấp. Đăng ký tài khoản ngay hôm nay để không bỏ lỡ cơ hội nhận khuyến mãi chào mừng thành viên mới 179k.
    Website: https://vin777.uno/
    Địa chỉ: 110 Đ. Kênh 19/5, Tây Thạnh, Hồ Chí Minh, Vietnam
    Điện thoại: 0973 288 378
    Email: vin777uno@gmail.com
    Hashtag: #vin777 #vin777gripe #trangchuvin777 #nhacaivin777 #linktaivin777

    Trả lờiXóa