Edytuj stronę Odnośniki Fold/unfold all ODT export Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić. ====== 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 ==== <code C#> 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<współczynniki.Length;i++) this.współczynniki[i]=współczynniki[i]; } public double Wartość(double x) { double y = 0; // tu obliczenia wartości return y; } } </code> ===== 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 ===== <code C#> 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."); } } </code> ===== Zadania ===== ==== Gra Life ==== Wikipedia: [[wppl>Gra_w_życie]] Reguły: * plansza nieskończona (zawinięta 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. \\ Pola wymagane: * wymiary planszy (wysokość i szerokość, domyślnie 20x20) * ilość żywych komórek (zależy od losowania, domyślnie komórka jest inicjowana jako żywa z prawdopodobieństwem 1/4) * symbol (znak) reprezentujący żywą komórkę (domyślnie ''*'') * plansza (tablica o odpowiednich wymiarach) Inne możliwe pola opcjonalne: * kolor znaku, kolor tła planszy Metody wymagane: * Konstruktory * domyślny (plansza o wymiarach 10x10, losowo zainicjowane 25 żywych komórek) * pozwalający zainicjować planszę o odpowiednich wymiarach oraz ustawić początkowy stan planszy dla danego prawdopodobieństwa pojawienia się żywej komórki. * (dla chętnych) jak wyżej + pozwalać określić znak wizualizujący żywą komórkę oraz kolorystykę (kolor znaku i tło). * 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) * Metoda prywatna wyznaczająca liczbę sąsiadów dla danej komórki na pozycji ''[x,y]''. Metody opcjonalne: * 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|}}