Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. #include "DxLib.h"
  2. #define height 70
  3. #define width 80
  4.  
  5. int red = GetColor(200, 0, 0);
  6. int green = GetColor(0, 200, 0);
  7. int blue = GetColor(0, 0, 200);
  8.  
  9. void random_set(int **map){
  10. for (int i = 0; i < width; i++){
  11. for (int j = 0; j < height; j++){
  12. map[i][j] = (int)((double)rand() / RAND_MAX+0.5);
  13. }
  14. }
  15. }
  16.  
  17. void write(int **map){
  18. for (int i = 0; i < width; i++){
  19. for (int j = 0; j < height; j++){
  20. if (map[i][j]){
  21. DrawFormatString(i * 10, j * 10, green, "*");
  22. }
  23. }
  24. }
  25. }
  26.  
  27. void copy_map(int** map, int** temp_map){
  28. for (int i = 0; i < width; i++){
  29. for (int j = 0; j < height; j++){
  30. temp_map[i][j] = map[i][j];
  31. }
  32. }
  33. }
  34.  
  35. void update(int** map, int** temp_map){
  36. int count;
  37. for (int i = 0; i < width; i++){
  38. for (int j = 0; j < height; j++){
  39.  
  40. //生きているセルの個数を数える
  41. count = 0;
  42.  
  43. //周りの8セルのチェック
  44. if (i != 0){ count += map[i - 1][j]; }
  45. if (i != 0 && j != height - 1){ count += map[i - 1][j + 1]; }
  46. if (j != height - 1){ count += map[i][j + 1]; }
  47. if (i != width - 1 && j != height - 1){ count += map[i + 1][j + 1]; }
  48. if (i != width - 1){ count += map[i + 1][j]; }
  49. if (i != width - 1 && j != 0){ count += map[i + 1][j - 1]; }
  50. if (j != 0){ count += map[i][j - 1]; }
  51. if (i != 0 && j != 0){ count += map[i - 1][j - 1]; }
  52.  
  53. if ((map[i][j] && (count == 2 || count == 3)) || (!map[i][j] && count == 3)){
  54. temp_map[i][j] = 1;
  55. }
  56. else{
  57. temp_map[i][j] = 0;
  58. }
  59. }
  60. }
  61. //更新したtemp_mapをmapにコピー
  62. copy_map(temp_map, map);
  63. }
  64.  
  65. int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
  66.  
  67. //前処理
  68. ChangeWindowMode(true);
  69. SetAlwaysRunFlag(true);
  70. DxLib_Init();
  71. SetGraphMode(1000, 700, 8);
  72. SetDrawScreen(DX_SCREEN_BACK);
  73.  
  74. //mapの宣言
  75. int **map=new int*[width];
  76. int **temp_map = new int*[width];
  77. for (int i = 0; i < width; i++){
  78. map[i] = new int[height];
  79. temp_map[i] = new int[height];
  80. }
  81.  
  82. //第1世代をランダムにセット
  83. random_set(map);
  84.  
  85. //世代用の変数
  86. int generation = 1;
  87.  
  88. while (true){
  89. //画面をクリアする
  90. ClearDrawScreen();
  91.  
  92. //世代を表示
  93. DrawFormatString(810, 50, red, "世代:%d", generation);
  94.  
  95. //map表示
  96. write(map);
  97.  
  98. //次の世代を計算
  99. update(map, temp_map);
  100.  
  101. //0.1秒待って画面反転 世代を1進める
  102. WaitTimer(100);
  103. generation++;
  104. ScreenFlip();
  105. }
  106. //終了処理
  107. DxLib_End();
  108. return 0;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement