====== C# Wstęp ====== ===== Typy danych ===== * [[http://msdn.microsoft.com/en-us/library/ya5y69ds.aspx|Built-In Types]] * bool, char, int, double, ... * [[http://msdn.microsoft.com/en-us/library/s1ax56ch.aspx|Value Types]] * struktury * [[http://msdn.microsoft.com/en-us/library/490f96s2.aspx|Reference Types]] * klasy * interfejsy * string * tablice * tablice [[http://msdn.microsoft.com/en-us/library/9b9dty7d%28v=vs.80%29.aspx|Arrays]] ===== Klasy ===== ==== Wielomian ==== public class Wielomian { private int stopień ; private double [] współczynniki = null; public Wielomian() { stopień = 0; współczynniki = new double[1] ; współczynniki[0] = 0; } public Wielomian(double[] współczynniki) { stopień = współczynniki.Length - 1; this.współczynniki = new double[współczynniki.Length]; for(int i=0;i ===== System.Console ===== MSDN : [[http://msdn.microsoft.com/en-us/library/system.console.aspx|System.Console]] * wyświetlanie/wczytywanie danych * [[http://msdn.microsoft.com/en-us/library/zcwe8sfx.aspx|Write()]], [[http://msdn.microsoft.com/en-us/library/zdf6yhx5.aspx|WriteLine()]] * [[http://msdn.microsoft.com/en-us/library/system.console.read.aspx|Read()]] [[http://msdn.microsoft.com/en-us/library/system.console.readline.aspx|ReadLine()]] * pozycjonowane tekstu * [[http://msdn.microsoft.com/en-us/library/system.console.setcursorposition.aspx|Console.SetCursorPosition()]] - określenie pozycji kursora * [[http://msdn.microsoft.com/en-us/library/system.console.cursortop.aspx|Console.CursorTop]] [[http://msdn.microsoft.com/en-us/library/system.console.cursorleft.aspx|Console.CursorLeft]] - aktualna pozycja kursora * czyszczenie * [[http://msdn.microsoft.com/en-us/library/system.console.clear.aspx|Clear()]] - czyszczenie bufora * własności konsoli * [[http://msdn.microsoft.com/en-us/library/system.console.setwindowposition.aspx|SetWindowPosition()]], [[http://msdn.microsoft.com/en-us/library/system.console.windowtop.aspx|WindowTop]], [[http://msdn.microsoft.com/en-us/library/system.console.windowleft.aspx|WindowLeft]] - położenie okna * [[http://msdn.microsoft.com/en-us/library/system.console.setwindowsize.aspx|SetWindowSize()]], [[http://msdn.microsoft.com/en-us/library/system.console.windowwidth.aspx|WindowWidth]], [[http://msdn.microsoft.com/en-us/library/system.console.windowheight.aspx|WindowHeight]] - szerokość okna * [[http://msdn.microsoft.com/en-us/library/system.console.bufferwidth.aspx|BufferWidth]], [[http://msdn.microsoft.com/en-us/library/system.console.bufferheight.aspx|BufferHeight]] - wysokość i szerokość bufora * [[http://msdn.microsoft.com/en-us/library/system.console.title.aspx|Title]] - tytuł okna * kolory * [[http://msdn.microsoft.com/en-us/library/system.console.foregroundcolor.aspx|Console.ForegroundColor]] kolor pierwszoplanowy (znaki) * [[http://msdn.microsoft.com/en-us/library/system.console.backgroundcolor.aspx|Console.BackgroundColor]] kolor tła (znaków) * [[http://msdn.microsoft.com/en-us/library/system.consolecolor.aspx|System.ConsoleColor Enumeration]] * animacje * [[http://msdn.microsoft.com/en-us/library/zks4cwcf.aspx|Console.MoveBufferArea()]] przesuwanie fragmentu konsoli * klawisze * inne przydatne * [[http://msdn.microsoft.com/en-us/library/system.console.cursorvisible.aspx|System.Console.CursorVisible]] - widoczność kursora (true/false) * [[http://msdn.microsoft.com/en-us/library/system.threading.thread.sleep.aspx|System.Threading.Thread.Sleep()]] uśpienie wątku * [[http://msdn.microsoft.com/en-us/library/system.random.aspx|System.Random]] generator liczb (pseudo)losowych * [[http://msdn.microsoft.com/en-us/library/system.random.nextdouble.aspx|NextDouble()]] - zwraca liczbę double z zakresu [0,1] Tworzenie gier w konsoli Windows: {{http://broadcast.oreilly.com/2010/08/understanding-c-text-mode-games.html|Understanding C#: Use System.Console to build text-mode games By Andrew Stellman}} ===== Hello World ===== using System; class PositionText { static void Main(string[] args) { Console.WriteLine("Witaj świecie!."); Console.Write("Podaj swoje imię: "); string text = Console.ReadLine(); int left = Console.CursorLeft; int top = Console.CursorTop; Console.SetCursorPosition(15, 20); Console.Write("Witaj -> {0} <-", text); Console.SetCursorPosition(left, top); Console.WriteLine("Koniec."); } } ===== Zadania ===== ==== Gra Life ==== Wikipedia: [[wppl>Gra_w_życie]] Reguły: * plansza nieskończona (zawinięta (torus) góra/dół, lewo/prawo) * komórka, która ma dokładnie 3 żywych sąsiadów, staje się żywa w następnej jednostce czasu (rodzi się) * żywa komórka z 2 albo 3 żywymi sąsiadami pozostaje nadal żywa; przy innej liczbie sąsiadów umiera (z "samotności" albo "zatłoczenia") Utwórz klasę ''Plansza'', która zawiera stan gry oraz pozwala sterować przebiegiem gry w życie. \\ Metody wymagane: * Konstruktor domyślny. Inicjuje planszę o wymiarach 10x10, na każdej pozycji komórka żywa występuje z prawdopodobieństwem 1/4. * Konstruktor, który dla podanych wymiarów N i M oraz prawdopodobieństwa p, inicjuje planszę o podanych wymiarach NxM oraz losuje początkowy stan planszy, gdzie na każdej pozycji komórka żywa może wystąpić z podanym prawdopodobieństwem. * Metoda inicjująca rozkład początkowy żywych komórek dla danej wartości prawdopodobieństwa pojawienia się żywej komórki w danej pozycji * Metoda pozwalająca wykonać jeden cykl (zmiana stanu na planszy) * Metoda rysująca aktualny stan planszy w konsoli (wyczyszczenie konsoli, narysowanie planszy oraz żywych komórek, wyświetlenie liczby żywych komórek oraz numeru cyklu). Żywa komórka domyślnie reprezentowana jest przez symbol gwiazdki ''*''. * Metoda wyznaczająca liczbę sąsiadów dla danej komórki na pozycji ''[x,y]''. Metody opcjonalne: * Konstruktor pozwalający określić znak wizualizujący żywą komórkę oraz kolorystykę planszy (kolor znaku i tło). * Metoda pozwalająca zapisać planszę do pliku tekstowego o podanej nazwie. \\ Zobacz: [[http://msdn.microsoft.com/en-us/library/system.io.aspx|System.IO]] klasy związane z obsługą wejścia-wyjścia, System.IO.FileStream, [[http://msdn.microsoft.com/en-us/library/system.io.streamwriter.aspx|StreamWriter]] zapis do strumienia (np. do pliku) Zaimplementuj program który wyświetli animację obrazującą proces rozwoju komórek na planszy. ** Diagram UML - przykład ** {{:zajecia:po_2013_1:09_cs_life:09_cs_life.png|}} ** Screenshot ** {{:zajecia:po_2014_1:game_of_life_screenshot.png|}}