C# Wstęp

Typy danych

Built-In Types

bool, char, int, double, ...

Value Types

struktury

Reference Types

klasy

interfejsy

string

tablice

tablice 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<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; } }

System.Console

MSDN : System.Console

wyświetlanie/wczytywanie danych

Write(), WriteLine()

Read() ReadLine()

pozycjonowane tekstu

Console.SetCursorPosition() - określenie pozycji kursora

Console.CursorTop Console.CursorLeft - aktualna pozycja kursora

czyszczenie

Clear() - czyszczenie bufora

własności konsoli

SetWindowPosition(), WindowTop, WindowLeft - położenie okna

SetWindowSize(), WindowWidth, WindowHeight - szerokość okna

BufferWidth, BufferHeight - wysokość i szerokość bufora

Title - tytuł okna

kolory

Console.ForegroundColor kolor pierwszoplanowy (znaki)

Console.BackgroundColor kolor tła (znaków)

System.ConsoleColor Enumeration

animacje

Console.MoveBufferArea() przesuwanie fragmentu konsoli

klawisze

inne przydatne

System.Console.CursorVisible - widoczność kursora (true/false)

System.Threading.Thread.Sleep() uśpienie wątku

System.Random generator liczb (pseudo)losowych

NextDouble() - zwraca liczbę double z zakresu [0,1]

Tworzenie gier w konsoli Windows: 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: 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 20×20)

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 10×10, 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: System.IO klasy związane z obsługą wejścia-wyjścia, System.IO.FileStream, 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