Co napisać?

0

Chciałbym nabyć trochę praktyki w programowaniu aplikacji użytkowych, okienkowych które zbliżone są do tych "prawdziwych". Z tym że brakuje mi pomysłu... ;) Podrzućcie jakieś pomysły na programy do napisania. Najchętniej bym widział programy które niezbyt zaawansowany programista może napisać w tydzień przy okazji szkoląc się z programowania obiektowego (analizy, odpowiedniego podziału na moduły itp.) i formatek. Programy zamierzam napisać w C#. Od razu piszę że nie chodzi mi o problemy algorytmiczne.

0

napisz Tetrisa (2D) z mysla, ze za drugi-tydzien bedziesz go przerabiac na BreakOut'a (2,5D), i potem go przerob - zweryfikujesz swoj design

0

A znacie moze jakies takie odpowiedniki CodePlex ,tylko na troche nizszym poziomie w sensie ,dla średnio zaawansowanych programistow ,ktorzy chetnie podlaczyliby sie pod jakis projekt , w ktorym mogliby cokolwiek pomoc ,a nie tylko sie przygladac... ???

0

Tetrisa zrobiłem. Z tym że pytanie czy jest dobrze zrobione z obiektowego punktu widzenia...

http://rapidshare.com/files/144396791/Tetris0.rar.html

Klasy jakie mam:

Brick - klocek który możemy obracać (bool Rotate(RotateDirection) ) i możemy go przesuwać (bool Move(Direction)). Zawiera informacje o położeni (int X,Y), o kształcie (bool[4,4] Shape) i kolorze klocka.

Board - "plansza" która składa się z pojedynczych pól (Field Fields[19,8]) które określają czy są wolne. Planszę możemy wyczyścić (void Clear()) i "odcisnąć" na niej klocek (bool AddBrick( Brick )).

Field - pola z których składa się plansza, zawiera informacje o tym czy pole jest wolne i o kolorze pola.

Game - zawiera planszę gry, klocek obecny i następny i informacje o grze (Info). Zawiera timer który wyznacza tempo gry. Zajmuje się wyświetlaniem i pilnowaniem reguł gry.

No i teraz dylematy...
Niepodoba mi się że Brick ma dostęp do Board, bo jest to wymagane przy obrocie (czy może się nie wadząc o nic?) jak i przy poruszaniu (czy udało się przesunąć nie napotykając na przeszkodę?) .

Miałem też problem z umieszczeniem metody RemoveCompleteLines która to wykrywa i zajmuje się pełnymi liniami. Z jednej strony jest to operacja na planszy, ale z drugiej tyczy się to ściśle reguł gry i dlatego u mnie znajduję się w Game.

Błędem jest to że Game dziedziczy po Panel ale już nie chciałem poprawiać naprędce. Ogólnie nie jestem przekonany co do poprawności wyświetlania. Nigdy nie wiedziałem kto i jak ma być za to odpowiedzialny. Czy każda jednostka powinna sama siebie wyświetlać (każde pole siebie, klocek siebie, ...) ale wtedy musiałyby mieć dostęp do Form, a to chyba nie byłoby pożądane.

Odnośnie samej gry. Nie jest ona doskonała, nawet nie jest dobra, ale nie taki miałem cel. Moim głównym problemem który chciałem było w miarę poprawne rozplanowanie tego. Oczywiście można się bawić w animacje, w zapisywanie najlepszych wyników czy dodanie jakiś super-autorskich pomysłów, ale nie to było moim celem. ;)

Jak myślę o przerobieniu tego na BreakOuta to ciężko mi znaleźć coś do użycia... Owszem Board się nada, Field również. Brick można zmienić na Block (zmieniając rozmiar Shape) i informację o bonusie za dane pole i ewentualnie Brick użyć jako podstawe do Ball (zmienić Move) ale według mnie jest to sztuczne...

0

Czy za cel postawiłeś sobie napisanie Tetrisa, który byłby BreakOutem, bo takie odniosłem wrażenie? quetzalcoatl miał na myśli napisanie klasy Board czy Field w taki sposób aby bez zmian można było tego użyć w BreakOut, pozostałe klasy przerabiasz albo piszesz od nowa bo przecież klocek z tetrisa za nic w świecie nie przypomina piłeczki :)

0

:-/

Niby racja że nie można się spodziewać że 100% kodu zostanie ponownie użyte, ale jednak patrząc na ilość kodu który jest użyteczny, to jego liczbę linii można wyrazić w dwóch cyfrach...

Co do wykorzystania "Brick" jako piłeczki lub jako klocka to według mnie nadaje się równie dobrze do obu celów... Wystarczy zwiększyć plansze do 400x400 i mamy nic innego jak Field = pixel, a Shape w Brick określa wygląd elementu - czyli w przypadku zbijanego klocka będzie to prostokąt 40x10 a piłka będzie kołem o średnicy powiedzmy 8, a sama paletka też by mogła być Brickiem; oczywiście należałoby to wszystko odpowiednio pociąć i złożyć ponownie. Ale mniejsza. ;)

Zakładając ten temat miałem nadzieję że będę mógł przebierac w pomysłach, a tutaj bida! Naprawdę nie macie pomysłu skąd brać propozycje na niezbyt skomplikowane programy? Bardziej wolałbym coś użytkowego niż gry... Chyba wezmę się za jakieś standardowe problemy typu własny klient GG, czy jakaś prosta przeglądarka. Prosiłbym jednak o podrzucanie pomysłów bo tych mi brak (a przynajmniej nigdy ich nie będzie za wiele). :-P

1 użytkowników online, w tym zalogowanych: 0, gości: 1