Advertisement
Cassimus

Siatka

May 27th, 2024 (edited)
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.52 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace LifeGame
  8. {
  9. public class Siatka
  10. {
  11. private int[,] tablicaKomorek;
  12. private readonly int liczbaWierszy;
  13. private readonly int liczbaKolumn;
  14.  
  15. private const int ZYWA = 1;
  16. private const int MARTWA = 0;
  17. private const char ZNAK_ZYWA = 'O';
  18. private const char ZNAK_MARTWA = ' ';
  19.  
  20. public Siatka(int liczbaWierszy, int liczbaKolumn)
  21. {
  22. this.liczbaWierszy = liczbaWierszy;
  23. this.liczbaKolumn = liczbaKolumn;
  24.  
  25. tablicaKomorek = new int[liczbaWierszy, liczbaKolumn];
  26.  
  27. tablicaKomorek.Initialize();
  28.  
  29. WypelnijPlansze(liczbaWierszy, liczbaKolumn);
  30. }
  31.  
  32. public void ZrobKrok()
  33. {
  34. int[,] nowaTablicaKomorek = new int[liczbaWierszy, liczbaKolumn];
  35.  
  36. for (int wiersz = 0; wiersz < liczbaWierszy; wiersz++)
  37. {
  38. for (int kolumna = 0; kolumna < liczbaKolumn; kolumna++)
  39. {
  40. nowaTablicaKomorek[wiersz, kolumna] = ZastosujZasady(wiersz, kolumna);
  41. }
  42. }
  43. tablicaKomorek = nowaTablicaKomorek;
  44. }
  45.  
  46. public void Wydrukuj()
  47. {
  48. for(int wiersz = 0; wiersz < liczbaWierszy; wiersz++)
  49. {
  50. for (int kolumna = 0; kolumna < liczbaKolumn; kolumna++)
  51. {
  52. if (tablicaKomorek[wiersz,kolumna] == ZYWA) {
  53. Console.Write(ZNAK_ZYWA);
  54. }
  55. else
  56. {
  57. Console.Write(ZNAK_MARTWA);
  58. }
  59. Console.Write(' ');
  60. }
  61. Console.WriteLine();
  62. }
  63. }
  64.  
  65. private int PoliczZywychSasiadow(int wiersz, int kolumna)
  66. {
  67. int sasiedzi = 0;
  68.  
  69. for (int w = wiersz - 1; w <= wiersz + 1; w++)
  70. {
  71. if (w < 0 || w > liczbaWierszy) continue;
  72. for (int k= kolumna -1; k<= kolumna +1; k++)
  73. {
  74. if (k < 0 || k > liczbaKolumn) continue;
  75.  
  76. if (tablicaKomorek[w,k] == ZYWA)
  77. {
  78. sasiedzi++;
  79. }
  80. }
  81. }
  82.  
  83. return sasiedzi;
  84. }
  85.  
  86. private int ZastosujZasady(int wiersz, int kolumna)
  87. {
  88. int liczbaSasiadow = PoliczZywychSasiadow(wiersz, kolumna);
  89.  
  90. if (tablicaKomorek[wiersz,kolumna] == ZYWA) // Zywe
  91. {
  92. if (liczbaSasiadow == 2 || liczbaSasiadow == 3)
  93. {
  94. return ZYWA;
  95. }
  96. }
  97. else // Martwe
  98. {
  99. if (liczbaSasiadow == 3)
  100. {
  101. return ZYWA;
  102. }
  103. }
  104. return MARTWA;
  105. }
  106.  
  107. private void WypelnijPlansze(int liczbaWierszy, int liczbaKolumn)
  108. {
  109. Random maszynaLosujaca = new Random();
  110.  
  111. for (int wiersz = 0; wiersz < liczbaWierszy; wiersz++)
  112. {
  113. for (int kolumna = 0; kolumna < liczbaKolumn; kolumna++)
  114. {
  115. tablicaKomorek[wiersz, kolumna] =
  116. maszynaLosujaca.Next(2);
  117. }
  118. }
  119. }
  120. }
  121. }
  122.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement