Advertisement
Cassimus

BrickGame

Jan 17th, 2024 (edited)
17
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.30 KB | None | 0 0
  1. using System;
  2. using System.Threading;
  3.  
  4. namespace BrickGame
  5. {
  6. // przyspieszanie w trakcie grania
  7. // nitro
  8. // zbieranie nitro
  9. // reset (nowa gra)
  10. // High score
  11.  
  12.  
  13. internal class Program
  14. {
  15. static string[] plansza;
  16. const string GRACZ = "^";
  17. const string PRZESZKODA = "#";
  18. static int punkty = 0;
  19. static int czasNitro = -1;
  20.  
  21. static void Main(string[] args)
  22. {
  23. /// 0-lewa strona, 1 - środek, 2-prawa strona
  24. int pozycjaGracza = 1;
  25. bool czyUderzony = false;
  26. Random generatorLosowy = new Random();
  27.  
  28. int wysokoscPlanszy = 10;
  29. int opoznienieWyswietlania = 600; // 0,6 s - czas trwania klatki
  30. int zmianaPredkosci = 10;
  31.  
  32. // Narysuj nową planszę
  33. NowaPlansza(wysokoscPlanszy);
  34.  
  35. // Ustaw gracza na planszy
  36. UstawGracza(pozycjaGracza);
  37. //Wyświetl plansze
  38. PokazPlansze();
  39.  
  40. // działanie gry do chwili udeżenia
  41. while (!czyUderzony)
  42. {
  43. // przechwyć dzialanie użytkownika
  44. pozycjaGracza = PrzemiescGracza(pozycjaGracza);
  45.  
  46. // przesuń pojazd
  47. UstawGracza(pozycjaGracza);
  48.  
  49. // ustaw przeszkodę
  50. int pozycjaPrzeszkody = generatorLosowy.Next(3);
  51. string przeszkoda = UstawPrzeszkode(pozycjaPrzeszkody);
  52. DodajPrzeszkode(przeszkoda);
  53.  
  54. PokazPlansze();
  55.  
  56. // sprawdź czy udeżyliśmy w przeszkodę
  57. czyUderzony = CzyUderzylismy(pozycjaGracza);
  58.  
  59. if (czasNitro == 10)
  60. {
  61. zmianaPredkosci += 200;
  62. czasNitro--;
  63. }
  64. else if (czasNitro > 0)
  65. {
  66. czasNitro--;
  67. }
  68. else if (czasNitro == 0)
  69. {
  70. zmianaPredkosci -= 200;
  71. czasNitro = -1;
  72. }
  73. opoznienieWyswietlania = opoznienieWyswietlania - zmianaPredkosci;
  74.  
  75. Thread.Sleep(opoznienieWyswietlania);
  76. }
  77.  
  78. GameOver();
  79.  
  80. Console.ReadKey();
  81. }
  82.  
  83. private static bool CzyUderzylismy(int pozycjaGracza)
  84. {
  85. bool czyUderzony = false;
  86. int pozycjaNajbliższejPrzeszkody =
  87. plansza[plansza.Length - 2].IndexOf(PRZESZKODA);
  88. if (pozycjaGracza == pozycjaNajbliższejPrzeszkody)
  89. {
  90. czyUderzony = true;
  91. }
  92. else
  93. {
  94. punkty++;
  95. }
  96. return czyUderzony;
  97. }
  98.  
  99. private static int PrzemiescGracza(int pozycjaGracza)
  100. {
  101. if (Console.KeyAvailable)
  102. {
  103. ConsoleKeyInfo nacisnietyKlawisz = Console.ReadKey(true);
  104. if (nacisnietyKlawisz.Key == ConsoleKey.D && pozycjaGracza < 2)
  105. {
  106. pozycjaGracza++;
  107. }
  108. if (nacisnietyKlawisz.Key == ConsoleKey.A && pozycjaGracza > 0)
  109. {
  110. pozycjaGracza--;
  111. }
  112. if (nacisnietyKlawisz.Key == ConsoleKey.Spacebar)
  113. {
  114. if (czasNitro == -1)
  115. {
  116. czasNitro = 10;
  117. }
  118. }
  119.  
  120. while (Console.KeyAvailable)
  121. {
  122. Console.ReadKey(false);
  123. }
  124.  
  125. }
  126. return pozycjaGracza;
  127. }
  128. private static void DodajPrzeszkode(string przeszkoda)
  129. {
  130. plansza[0] = przeszkoda;
  131. for (int i = plansza.Length - 2; i > 0; i--)
  132. {
  133. plansza[i] = plansza[i - 1];
  134. }
  135. }
  136. private static string UstawPrzeszkode(int pozycjaPrzeszkody)
  137. {
  138. string linia = " ";
  139. linia = linia.Insert(pozycjaPrzeszkody, PRZESZKODA);
  140. return linia;
  141. }
  142. private static void GameOver()
  143. {
  144. int czasPoGrze = 2000;
  145.  
  146. Console.Clear();
  147. Console.WriteLine("GAME OVER");
  148. Console.WriteLine($"Zdobyłeś {punkty} punktów");
  149. Thread.Sleep(czasPoGrze);
  150.  
  151. Console.ReadKey();
  152. }
  153. private static void PokazPlansze()
  154. {
  155. Console.Clear();
  156. for (int i = 0; i < plansza.Length; i++)
  157. {
  158. Console.WriteLine(plansza[i]);
  159. }
  160. Console.WriteLine($"Punkty: {punkty}");
  161. }
  162. private static void NowaPlansza(int wysokoscPlanszy)
  163. {
  164. plansza = new string[wysokoscPlanszy];
  165. for (int i = 0; i < plansza.Length; i++)
  166. {
  167. plansza[i] = "";
  168. }
  169. punkty = 0;
  170. }
  171.  
  172. private static void UstawGracza(int pozycjaGracza)
  173. {
  174. string linia = " ";
  175. linia = linia.Insert(pozycjaGracza, GRACZ);
  176. plansza[plansza.Length - 1] = linia;
  177. }
  178. }
  179. }
  180.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement