fel
le

Zászlók

Készítsünk olyan programot, amely a magyar zászlót rajzolja ki a karakteres képernyőre az alábbi módon: készítsünk először egy külön osztályt az alábbi adatokkal:

  • y1,y2 egész szám adatok,
  • szín
  • kirajzolandó csillagok darabszáma
  • egy kirajzol() paraméter nélküli void-os függvény, mely a képernyőn az adott y1..y2 koordináták közé eső sávban adott szín színnel random koordinátákra csillag karaktert rajzol.

Példányosítsuk meg az osztályt 3 példányra, az első a y1=0, y2=7, szín=piros beállítások mellett egy piros sávot rajzol hasonlóan a második fehér, a harmadik zöld sávot rajzol ki. A képernyő 25 soros (0..24), és 80 oszlopos (0..79).

Hívjuk meg a három kirajzol() függvényt egymás után, hogy megkapjuk a három sávot.

1. ábra:

Zászlók több szálon

Alakítsuk át az előző programot oly módon, hogy a három függvényt három szálon indítjuk el, egymással párhuzamosan futtatva.

Gondolkodjunk el rajta mikor mi történik, miért kapjuk azt amit kapunk, és mit tegyünk hogy a működés az elvártaknak megfelelő legyen.

Zászlók forráskódja

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace ConsoleApplication8
{
    class szinesSav
    {
        static Random rnd = new Random();
        public ConsoleColor szine;
        public int y1;
        public int y2;
        public int db;
        //.............................................................................
        public szinesSav(ConsoleColor szine, int y1, int y2, int db)
        {
            this.szine = szine;
            this.y1 = y1;
            this.y2 = y2;
            this.db = db;
           
        }
        //.............................................................................
        public void kirajzol() // 640 db egy sav
        {
            for (int i = 0; i < db; i++)
            {
                int x = rnd.Next(0, 80);
                int y = rnd.Next(y1, y2);
                Console.ForegroundColor = szine;
                Console.SetCursorPosition(x, y);
                Console.Write('*');
            }
        }
        //.............................................................................
    }

    class Program
    {
        static void Main(string[] args)
        {
            szinesSav p1 = new szinesSav(ConsoleColor.Red, 0, 8,4000);
            p1.kirajzol();
            szinesSav p2 = new szinesSav(ConsoleColor.White, 8, 16,4000);
            p2.kirajzol();
            szinesSav p3 = new szinesSav(ConsoleColor.Green, 16, 24, 4000);
            p3.kirajzol();
            Console.ReadLine();
        }
    }
}
 
Hernyák Zoltán
2013-04-15 14:10:12