prampec

Életjáték template

Nov 29th, 2019
87
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2.  
  3. namespace StreamGraphics
  4. {
  5.     public class Eletjatek : GraphicsWorker
  6.     {
  7.         Random rnd = new Random();
  8.  
  9.         public void run()
  10.         {
  11.             // Beállítjuk a grafikus pufferméret, hogy körübelül
  12.             // akkora legyen, mint a mező mérete.
  13.             StreamGraphics.setBufferSize(3000);
  14.  
  15.             // Ilyen sűrűn frissüljön a képernyő.
  16.             // (Ez a körök közti várakozási idő.)
  17.             StreamGraphics.setStepDelayMs(1000);
  18.  
  19.             // Feltöltünk egy tárolót véletlenszerű értékekkel
  20.             // A tároló azt tartalmazza, hogy az adott helyen
  21.             // van-e élet. (igaz vagy hamis)
  22.             bool[] mezo = new bool[30*40]; // A tároló 1200 elemű
  23.             // Végigmegyünk a tároló összes elemén.
  24.             for (int i=0; i<30*40; i++)
  25.             {
  26.                 // Generálunk egy számot, ami 0, 1, 2, 3, 4 lehet.
  27.                 int r = rnd.Next(5);
  28.                 // A tároló 'i' helyére berakunk egy értéket.
  29.                 if (r == 0)
  30.                 {
  31.                     // Ha véletlenszerű szám ebben az esetben pont nulla,
  32.                     // akkor erre a helyre "igaz" kerül.
  33.                     mezo[i] = true;
  34.                 }
  35.                 else
  36.                 {
  37.                     // Ha véletlenszerű szám nem nulla,
  38.                     // akkor erre a helyre "hamis" kerül.
  39.                     mezo[i] = false;
  40.                 }
  41.  
  42.                 // A fenti blokk leírva tömörebben.
  43. //                field[i] = rnd.Next(5) == 0;
  44.             }
  45.  
  46.             // Végtelenségig ismételjük a köröket.
  47.             while (true)
  48.             {
  49.                 // Kirajzoljuk a mezőt.
  50.                 rajzoldAMezot(mezo);
  51.                 // Frissítjük a képernyőt.
  52.                 StreamGraphics.step();
  53.  
  54.                 // Egy új mezőt hozunk letre a játékszabályok alapján.
  55.                 // A régi mező felülírásra kerül a létrehozott új mezővel.
  56.                 mezo = ujMezo(mezo);
  57.             }
  58.         }
  59.  
  60.         private bool[] ujMezo(bool[] mezo)
  61.         {
  62.             // Létrehozunk egy tárolót a következő kör eltárolására.
  63.             bool[] ujMezo = new bool[30*40];
  64.  
  65.             // ... szabályok leprogramozása.
  66.  
  67.             return ujMezo;
  68.         }
  69.  
  70.         void rajzoldAMezot(bool[] mezo)
  71.         {
  72.             // Letörli a képernyőt.
  73.             StreamGraphics.clear();
  74.  
  75.             for (int y = 0; y < 30; y += 1)
  76.             {
  77.                 // Soronként megismételjük az alábbiakat
  78.                 for (int x = 0; x < 40; x += 1)
  79.                 {
  80.                     // Oszloponként megismételjük az alábbiakat
  81.  
  82.                     // Ez a sor és oszlop melyik helyet jelenti a tárolóban?
  83.                     int index = y*40 + x;
  84.                     bool vanElet = mezo[index];
  85.                     if (vanElet)
  86.                     {
  87.                         StreamGraphics.drawRect(x*20, y*20, 19, 19, Color.RED);
  88.                     }
  89.                 }
  90.             }
  91.         }
  92.     }
  93. }
RAW Paste Data