Technologia: Python + Pyglet.
Podjąłem kilka decyzji odnośnie plansz. Będą one miały powierzchnię "budowlaną" w rozmiarze 13x13 cegiełek (do jednego z tych wymiarów dojdzie jeszcze trochę marginesu, ale będzie to przestrzeń pusta, w której nie będą już znajdować się żadne przeszkody).
Każda z plansz będzie zapisana w oddzielnym pliku csv, znajdującym się w katalogu "plansze". Nazwą pliku będzie dwucyfrowy numer planszy. W środku każdego pliku będzie trzynaście wierszy, z których każdy będzie reprezentował jedną linię cegiełek w postaci: 0,0,0,1,1,1,0,0,0,1,1,1,2, gdzie zero oznacza pustą przestrzeń a większa liczba cegłę i jej rodzaj (o ile będą rodzaje).
Takie rozwiązanie pozwala bardzo wygodnie tworzyć i edytować plansze za pomocą szablonu stworzonego w arkuszu kalkulacyjnym, z użyciem formatowania warunkowego, uzależniając kolor tła komórki od wpisanej cyfry.
Napisałem funkcję, która wczytuje plik podany w argumencie a zwraca - używając pythonowej nomenklatury - listę list reprezentujących kolejne wiersze:
import csv
def wczytajjednaplansze(adrespliku):
plikcsv = csv.reader(open(adrespliku), delimiter=",")
lista = [line for line in plikcsv]
return lista
Nie wiem, jak wam, ale mnie się podoba. :)
EDIT: Zmodyfikowałem nieco powyższą funkcję tak, aby parametrem był po prostu numer żądanej planszy. Oto efekt:
import csv
def wczytajplansze(numerplanszy):
plikcsv = csv.reader(open("./plansze/" + "%02d" % numerplanszy + ".csv"), delimiter=",")
lista = [line for line in plikcsv]
return lista
13 cegiełek w poziomie to za mało. Dojdziesz do etapu, w którym z klocków na planszy będziesz chciał ułożyć np. domek. W końcu jak grywalne są plansze z samymi poziomymi pasami tych samych klocków :). Do tego trzeba się zastanowić czy ilość cegiełek ma być parzysta czy nie.
OdpowiedzUsuńPoczątkowo tak właśnie myślałem, żeby dokonać pogłębionej analizy tematu - zaprojektować kilka plansz i zobaczyć jak to wyjdzie. Na szczęście zanim zacząłem tracić na to czas znalazłem lepsze rozwiązanie: wyszukałem w Googlach grafiki różnych arkanoidów i policzyłem, jak to tam wygląda. Okazało się, że 13 to sprawdzony, grywalny wariant.
OdpowiedzUsuńJakbym miał większe parcie na oryginalność i więcej czasu mógł poświęcić temu projektowi, to pewnie poszedłbym drogą, którą proponujesz. A tak to po prostu pozostanę przy sprawdzonym rozwiązaniu.