rocksndiamonds - wymiana elementów we wszystkich lewelach.

Miejsce, w którym użytkownicy forum mogą zaprezentować swoje własne projekty programistyczne.
eskaemma
Sędziwy Jeż
Sędziwy Jeż
Posty: 31
Rejestracja: 20 kwie 2009, 14:59
Płeć: Mężczyzna
Wersja Ubuntu: 16.04
Środowisko graficzne: XFCE
Architektura: x86_64

rocksndiamonds - wymiana elementów we wszystkich lewelach.

Postautor: eskaemma » 29 cze 2017, 17:43

Prosty skrypt w pythonie 3.5.2, dostosowany do rozdzielczości 1440x900, który za pomocą "jednego kliknięcia"
umożliwia wymianę dowolnego elementu (np. w 100 lewelach) na dowolny inny element. Jeśli znudziło nam się granie
np. diamentami zielonymi, to możemy wszystkie wymienić np. na fioletowe. Można wymienić np. trawę na kamienie,
ale oczywiście to bez sensu, bo nie pogramy. Można wymieniać rownież elementy w sposób losowy.

Skrypt ma charakter eksperymentalny, ponieważ istnieje ryzyko uszkodzenia zestawu leweli lub jednego lewela,
ale przy umiejętnym użytkowaniu można nieźle się pobawić, tak jak ja to robię od kilku miesięcy.

Jak nie uszkodzić leweli:

1. Wystarczy ustalić, czy lewele są "jednobajtowe", czy "dwubajtowe" i zaznaczyć odpowiednią opcję
przed wymianą elementów.
Lewel "dwubajtowy" będzie wtedy, kiedy za pomocą rocksndiamonds utworzymy własny lewel lub otworzymy do
edycji istniejący lewel, a rocksndiamonds zapisze go w naszym domowym katalogu jako np.
/home/juzer/.rocksndiamonds/levels/juzer/002.level.
Lewel powinien mieć ustawiony silnik gry na rocksndiamonds (nie supaplex).
W przeciwnym razie możemy zobaczyć niewysadzalny mur zamiat trawy, którą wymieniliśmy. Można spróbować
ustalić eksperymentalnie z jakim lewelem lub zestawem leweli mamy do czynienia. W tym celu należy wykonać
zamianę jakiegoś elementu na inny przy zaznaczonej opcji "2 byte elements" i zobaczyć, czy ilość i jakość wymian jest
dokładnie taka jak być powinna. Jeśli nie, to klikamy "UNDO last replacement", zmieniamy opcję na "1 byte elements"
i sprawdzamy powtarzając wymianę elementów.

2. Jeśli w nazwie autora lewela lub w nazwie lewela znajdzie się ciąg znaków "BODY"
(i następujące po nim 2 bajty o wartościach 0) należy przyjąć, że taki lewel zostanie na pewno uszkodzony.
Jednak ryzyko zaistnienia takiej sytuacji jest raczej zerowe.

3. Jeśli wymieniamy element, który ma ustawione dodatkowe właściwości przez autora lewela, rocksndiamonds
w większości przypadków nie "zobaczy" tych właściwości, chociaż w pliku pozostają.

Skrypt zapisuje na dysku (w katalogu, w którym został uruchomiony) plik o nazwie last_edited.info, w którym
przechowuje historie wybieranych ścieżek do plików (tak dla wygody, aby za każdym razem nie szukać leweli).

Użycie guzika "Backup levels" spowoduje utworzenie podkatalogu o nazwie "levels_backup" w katalogu z wybranymi przez nas lewelami lub jednym lewelem i przekopiowanie wszystkich plików *.level do tego podkatalogu. Jeśli chcemy usunąć podkatalog "levels_backup", to trzeba zrobić to ręcznie - skrypt go nie kasuje. Kopie leweli radziłbym jednak zrobić samemu.

"Restore levels" odzyskuje wszystkie pliki *.level z danego
zestawu, nawet jeśli mamy wybrany jeden lewel z tego zestawu.

"UNDO last replacement" działa tylko wtedy, gdy skrypt jest uruchomiony. Po ponownym uruchomieniu skryptu
informacje o ostatniej wymianie elementów są tracone. Działanie tego guzika odnosi się tylko do ostatniego
kliknięcia na "Replace all" lub "Random replace" - wcześniejszych wymian nie pamięta. Jest niezależny od innych
guzików i dopóki jest w kolorze zielonym, to przywróci dokładnie ostatnią wymianę elementów, niezależnie czy był to
jeden lewel, czy zestaw leweli.

Guzik "Vice Versa" to nie to samo co "UNDO last replacement", chociaż w pewnych przypadkach może działać tak samo.

Pliki *.level otwierane są tylko na czas wymiany elementów. To, że widać do nich ścieżkę, nie oznacza, że są otwarte.
W związku z tym można mieć uruchomiony jednocześnie skrypt i rocksndiamonds. Oczywiście, po wymianie elementów należy w rocksndiamonds odświerzyć/wczytać level.

Plik graph.tgz (3,2 MB) zawiera skrypt i 4 katalogi, w których znajdują się małe gify w ilości 2683.
Dlatego przy rozpakowywaniu należy uważać, aby przypadkiem nie rozpakować ich sobie na pulpit.
Elementy, które nas nie interesują, można dowolnie z tych czterech katalogów kasować, z wyjątkiem 213.gif
i 217.gif, licząc się ze zmianą grafiki. Archiwum można rozpakować do dowolnego katalogu i uruchomić tak:

$ ./gui_replace_binary.py

Aby skrypt się uruchomił, prawdopodobnie trzeba doinstalować jeden pakiet, którego nazwy nie pamiętam.
System podpowie, jaki to pakiet. Możliwe, że związany z modułem tkinter.

Pytania i krytyczne opinie mile widziane.

https://goo.gl/l00b4e
Rule: 1002 (level 2) -> 'Unknown problem somewhere in the system.'

Wróć do „Nasza twórczość”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości