kategoria: Blitz
[#1] AmiMineSweeper (Saper dla Amigi)
Dzisiaj uważam za ukończony projekt przeniesienia Sapera z Windows dla Amigi pod nazwą AmiMineSweeper.

Gra jest pisana pod system. Wszystko odbywa się na okienkach w ekranie intuition.

TUTAJ jest link do gry. Zasady chyba każdy zna, ale dla przypomnienia:

KLIKAMY NA PLANSZY I ALBO TRAFIMY NA MINĘ ALBO NA PUSTE POLE, GDZIE MAMY INFORMACJĘ ILE MIN JEST DOOKOŁA. PUSTE POLE OZNACZA, ŻE NIE MAMY MIN DOOKOŁA.

Gra jest na czas.

- system odkrywania pustych pól był największym wyzwaniem, ale udało się
- mamy listę highscore dla każdego z trzech poziomów trudności
- możemy sobie stworzyć własną planszę o rozmiarach max 20x13 kafli

Oto kilka fotek:



10
[#2] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #1

Brawo. Widziałem na Retro Indie blogu wczoraj, i nawet nie miałem okazji spróbować.
Ty serio jesteś przemistrz!
3
[#3] Re: AmiMineSweeper (Saper dla Amigi)

@Ralpheeck, post #2

Mam nadzieję, że nie ma tu żadnych błędów w tej grze już. Nie sądziłem, że gry logiczne jest też trudno napisać. A jednak
[#4] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #1

OK
https://www.youtube.com/watch?v=_ACZ4gmlkpQ&ab_channel=przemo83
1
[#5] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #1

A czy fizyka wybuchu bomby jest dobrze oddana?
Głupi żart, gratulacje!

Może Solitaire i Free Cell?
Choć w sumie trochę szkoda wywłaszczać PD2 z czasu kodera...
1
[#6] Re: AmiMineSweeper (Saper dla Amigi)

@Jacques, post #5

Myślałem nad kartami, ale to wiązałoby się znowu z zabawą w pisanie pod system. Bardziej mi się podoba tryb BLITZ, czyli pod sprzęt. Już przywykłem do tego.

Co do pinballa, to wiem, że nie odwzoruję tej fizyki gry, a same reakcje stołu, punktacje i bonusy to masa pisania. Prędzej napiszę własny pinball, ale narazie nie mam do tego jakoś chęci. Za dużo zapału straciłem pisząc go, bo jednak po komentarzach na zagranicznych stronach widzę, że i tak sporo osób nie jest zadowolona z takiej fizyki, jaką udało mi się ogarnąć tam.
[#7] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #6

Zrób karty. Najlepiej Makao z rozbierającą panienką w iff

Ostatnia aktualizacja: 25.01.2023 17:58:59 przez Ralpheeck
1
[#8] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #1

Wrzucisz też na Aminet?
[#9] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #6

Albo minimalistyczne szachy :)
1
[#10] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #1

Mje pytanie brzmi: czy miny losujesz na samym poczatku czy dopiero po pierwszym kroku?
1
[#11] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #1




Działa super :)



----edit


Takie pytanko, czy w ramach edukacyjnych mógłbyś zamieścić listing programu?

Ostatnia aktualizacja: 25.01.2023 18:29:08 przez karolb
1
[#12] Re: AmiMineSweeper (Saper dla Amigi)

@Phibrizzo, post #10

Zapomniałem napisać o tym.

Miałem nie dodawać tego, ale jednak dałem. Można zauważyć przy pierwszym kliknięciu mignięcie ekranu. To oznacza, że przy pierwszym ruchu trafiło się na minę i mina, na którą trafiliśmy przenosi się na inne pole

@karolb: w sumie czemu nie, chociaż kilka rzeczy napisałem po swojemu, czyli nie używałem Eventów systemowych od kliknięć myszą, a ręcznie ustawiłem sobie zmiennymi reakcję myszy. Chodzi o to, że zaznaczało flagami mapę podczas wybierania opcji z górnego menu.

Ostatnia aktualizacja: 25.01.2023 18:48:57 przez tukinem
[#13] Re: AmiMineSweeper (Saper dla Amigi)

@Cedrat, post #8

Nigdy nic nie wrzucałem na Aminet. Trzeba tam mieć konto? Poza tym, chyba tam już są gry tego typu.
[#14] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #13

Nigdy nic nie wrzucałem na Aminet. Trzeba tam mieć konto?

Do Aminetu nie potrzeba konta. To "zwyczajny" serwer FTP.

Wrzucanie nowych paczek jest dosyć złożone, ale można się przyzwyczaić.

Musisz przygotować dwa pliki:

- Archiwum LHA, np. Saper.lha - jest to Twoja paczka do wrzucenia.
- Plik z rozszerzeniem Readme, np. Saper.readme - zawiera informacje o Twoiej paczce.

Plik Readme zawiera na początku szereg wierszy z niezbędnymi wpisami po których wpisujesz własny opis paczki. Przykład:

Short:        Saper for Amiga
Uploader:     twoj@email.com (Tukinem)
Author:       twoj@email.com (Tukinem)
Type:         game/puzzle
Version:      1.0
Architecture: m68k-amigaos >= 1.3.3
Distribution: Aminet

Here is a description for your game...

Oba pliki wrzucasz na serwer aminet.net do katalogu new i gotowe.

Więcej informacji o wrzucaniu na Aminet tutaj: http://wiki.aminet.net/Uploading_instructions
Więcej informacji o pliku Readme tutaj: http://wiki.aminet.net/index.php/The_Readme_file
4
[#15] Re: AmiMineSweeper (Saper dla Amigi)

@Hexmage960, post #14

Dziękuję za informacje. Jutro postaram się go wrzucić. Tam tylko programy pisane pod system można wrzucać?
[#16] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #15

Generalnie nie. Jako, że wrzucasz w LHA to z zasady gra musi być w postaci plików. Sam program nie musi działać pod systemem.

Nie można wrzucać DMS, a obrazy dyskietek ADF są akceptowane, choć odradzane.

Ostatnia aktualizacja: 25.01.2023 20:42:46 przez Hexmage960
[#17] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #1

OK
1
[#18] Re: AmiMineSweeper (Saper dla Amigi)

@Hexmage960, post #16

Rozumiem. Pytałem odnośnie moich poprzednich gier, ale one jednak wymagają bibliotek Blitza oraz mają często problemy z CPU Cache, więc jednak sobie je daruję.

Z drugiej strony niektóre z nich mógłbym przenieść na ekran Intuition i wtedy nie wymagałyby LIBSów od Blitza.
[#19] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #18

Pierwsze kroki co do systemowych gier masz już za sobą.

Serdecznie gratuluję Ci kolejnego sukcesu w postaci klonu Sapera. Gra wygląda świetnie.
1
[#20] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #15

Wrzucając na Aminet dotrzesz pewnie do większej grupy użytkowników, niż pisząc po forach.
[#21] Re: AmiMineSweeper (Saper dla Amigi)

@Cedrat, post #20

Przede wszystkim Aminet to dość pewne miejsce, w zasadzie z ciągłością działania od 30 lat, znane wszystkim Amigowcom na całym świecie. Wrzucając coś na Aminet masz gwarancję (no może nie 100%, nie takie serwisy znikały z sieci), że pliki będą dostępne nawet lata po tym jak Ci się znudzi pisanie gier na Amigę i utrzymywanie swoich stron.
[#22] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #6

Właśnie z tym pinballem Ci kibicowałem, ale moim zdaniem w takiej grze fizyka jest najważniejsza i musi być perfekcyjna. Twoja fizyka, z całym szacunkiem i podziwem dla Twojej pracy i zaangażowania, daleka była od idealnej. Pewnie trzeba by było zastosować metodę twórców najlepszych amigowych pinballi, tę z którą przez moment próbowałeś się mierzyć. I nie winię Cię, że porzuciłeś tamtą metodę, bo pewnie zaledwie garstka osób na tym forum by to ogarnęła... Albo może nawet nikt... Ja na pewno nie i Selur też pisał, że łeb ma na to za mały :) Ale nie ma tego złego, bo to dla Ciebie nowe doświadczenia i nauka. Jeszcze raz brawo za zapał. Obecnie jesteś chyba najpłodniejszym koderem na ppa. No i długa droga jaką przebyłeś w bardzo krótkim czasie zasługuje na oklaski. Tak trzymaj!
2
[#23] Re: AmiMineSweeper (Saper dla Amigi)

@mastaszek, post #22

Mimo wszystko szkoda, wolałbym PD2 z nieoryginalną fizyką niż wcale...
[#24] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #1

system odkrywania pustych pól był największym wyzwaniem, ale udało się

???
Przecierze to jedna funkcja która odkrywa pole (x,y) i jeśli w na tym polu było 0 min dookoła to rekurencyjnie sama wywołuje się dla pół dookoła.
Powinieneś częściej zadawać pytania o takie rzeczy na forum. Lub przeczytać sobie jeśli jeszcze tego nie zrobiłeś jakąś książkę o algorytmach, bo co chwilę będziesz wymyślał koło na nowo, albo co gorsze będziesz szedł w algorytmy o sporej złożoności ...

Ostatnia aktualizacja: 26.01.2023 09:20:55 przez Rafael/ARMO
1
[#25] Re: AmiMineSweeper (Saper dla Amigi)

@Rafael/ARMO, post #24

Albo (jeśli zależy nam na zmniejszeniu zużycia stosu) pętla po wszystkich polach odkrywająca nieodkrytych jeszcze sąsiadów pustych pól, powtarzana do skutku (czytaj: przejście pętli niczego nie zmieniło). Można ją też nieco zoptymalizować - zaczynać nie od początku i kończyć nie na końcu, tylko wziąć pod uwagę pierwszy/ostatni wiersz, w którym poprzednio coś odkryto. Można pójść dalej, i zrobić dwie pętle jedna w drugiej (jedna do wierszy, druga do kolumn), obydwie podobnie zoptymalizowane.

Coś takiego zrobiłem jako brzdąc na C64 w BASICu, gdzie miałem limit 10 zagnieżdżeń GOSUB, więc rekurencja nie wchodziła w grę.
[#26] Re: AmiMineSweeper (Saper dla Amigi)

@Rafael/ARMO, post #24

Oczywiście masz rację, z tym wymyślaniem "koła na nowo", ale ja osobiście lubię doświadczać procesu odkrywania i dochodzić samemu do rozwiązania, więc wcale nie dziwię się autorowi OK

Oczywiście adaptacja już istniejących rozwiązań, podanych na tacy mogłaby przynieś skutek w postaci szybszego osiągnięcia odpowiedniego poziomu wiedzy i umiejętności i co za tm idzie mogłoby skutkować powstaniem bardziej zaawansowanych programistycznie dzieł, ale to co kolega robi to świetna nauka i ćwiczenie "myślenia" a tak zdobyte doświadczenie o wiele bardziej "utrwali się w głowie" ok, racja
1
[#27] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #1

Gratulacje!

Spoko się gra.
1
[#28] Re: AmiMineSweeper (Saper dla Amigi)

@Rafael/ARMO, post #24

Ja ten algorytm rozumiałem, ale musiałem to odpowiednio zapisać w kodzie. Wszelkie algorytmy dostępne w google są pisane w C, Pythonie lub w Java, a to mi nic nie mówi. Nie chciałem zżynać kodu na siłę komuś, a chciałem sam napisać. Zawsze pisząc jakąkolwiek grę, pytałem kogoś jak co zrobić (Selura, Mastaszka, Hexmage itd). Chciałem tak prostą grę napisać sam, chociaż i tak musiałem zaczerpnąć pomocy, bo pierwszy raz pisałem pod system i nigdy nie używałem funkcji menu z belki oraz trochę różnią się komendy pomiędzy trybem BLITZ a AMIGA.

Jeszcze co do samego algorytmu, to musiałem sam go napisać, aby go dobrze zrozumieć, bo czytając ogólny opis nie wiedziałem zbytnio jak się do tego zabrać. Pierwsza wersja działała wolno przez nadmierne pętle For...Next. Musiałem przy znalazieniu odpowiedniego kafla w tych pętlach przerywać je, aby niepotrzebnie program nie szukał, skoro już znalazł. Następnie dopisałem odkrywanie kafli na bieżąco, co dało bardzo ładny efekt, który pokazuje jak plansza się odkrywa. Wystarczy wybrać opcję custom level i dać maksymalny rozmiar planszy i minimum min, aby zobaczyć jak ładnie się kolejno odkrywają pola. No i do tego kartę turbo trzeba by wyłączyć

PS. W weekend postaram się wrzucić grę na Aminet, jak mi się uda, to tu wrzucę listing całej gry. Tylko pododaję tam komentarze, aby było wiadomo co program robi w każdym momencie.

Ostatnia aktualizacja: 26.01.2023 15:14:42 przez tukinem
1
[#29] Re: AmiMineSweeper (Saper dla Amigi)

@karolb, post #11

Co do listingu kodu gry, to lepiej wrzucić to w pliku, czy tutaj rzucić całym kodem gry?
2
[#30] Re: AmiMineSweeper (Saper dla Amigi)

@tukinem, post #29

Myślę że w pliku będzie praktyczniej :)
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem