|
StrongholdNet - forum graczy Stronghold Największe polskie forum o grach z serii Stronghold. |
|
Hobby i zainteresowania - Zeszły tydzień w programowaniu
DarnokOk - 10 Kwiecień 16, 22:42 Temat postu: Zeszły tydzień w programowaniu Można by swoisty dziennik developera prowadzić tu i co tydzień w dowolnie wybrany dzień pisać co się zrobiło i nauczyło przez ostatni tydzień. Mam nadzieję, że ktoś tu odpisze i za tydzień nie będę musiał edytować posta. Zezwalam też na odchodzenie od własnego dziennika i zadawanie pytań o projekty i dawanie propozycji.
To ja zacznę; zapewne część tego co napiszę zrobiłem jeszcze wcześniej.
Tłukę Game Maker Studio na razie. Podoba mi się to, że nie muszę się martwić o linkowanie bibliotek i ustawianie trybu graficznego i innych pierdółek. Jedyne co mnie interesuje to assety i kod; obie te rzeczy na razie robię samemu. Plus GML jest mniej rygorystyczny od C++, więc jest przyjemniej w nim robić.
Skończyłem bazę programu do obrazków logicznych. (Zainteresowanych odsyłam do Googla. Inne nazwy to Picross, nanogramy.)
Program wczytuje dane obrazka z pliku i następnie na bieżąco sprawdza, jakie zmiany wprowadził użytkownik i pilnuje, kiedy cały obrazek jest gotowy; by na to zareagować. Stworzyłem też edytor do własnych obrazków. Najpierw wpisuje się wymiary obrazka od 1 do 25. (musiałem zaprogramować fieldboxy, by dało się te liczby wpisać. Input jaki miałem to ostatnie max. 1024 ostatnich znaków wciśniętych w trakcie działania programu, więc trzeba było zacząć od czyszczenia tego keyboard_string) Nawiasem mówiąc taki trochę keylogger z tego i nieuczciwy programista mógłby kraść dane wpisane w programie.
Generowana jest siatka na której można zaznaczać kratki. Liczby opisujące ilość kratek w rzędzie aktualizują się na bieżąco. Gdy uznamy, że obrazek jest gotowy, można wpisać jego nazwę (max. 25 znaków) i zapisać go. Oczywiście istnieje ochrona przed nadpisaniem.
Plik z tymi obrazkami zapisuje się w %localappdata% i można go skopiować, a ja mogę dodać do obrazków zapisanych w programie. A raczej jego zawartość.
Zacząłem teraz robić platformówkę, a inny projekt z zawartością generowaną proceduralnie mam na wstrzymaniu, bo troszkę mnie przerósł. Do C++ wrócę niedługo.
Co planuję na przyszły tydzień?
Platformówka:
-Ruch postaci
-Grawitacja
Picross:
-Menu z poziomami jako przewijana lista. Troszeczkę będzie się trzeba pobawić z pozycją kursora, wciśniętym lewym klawiszem itd.
Na razie picross jest zbyt brzydki, bym go Wam wrzucił, ale jeśli wykażecie zainteresowanie, to dopracuję go i jako wersję beta umieszczę. Jeśli stworzycie co najmniej dwa sensowne obrazki na pewno znajdziecie się w creditsach.
Ustalmy więc, że posty będę wrzucał w niedzielę lub poniedziałek.
Lord Smerf - 25 Kwiecień 16, 19:44
Ja ostatnio zdałem kolokwium z informatyki, a jakbyśmy nie dostali za zadanie zakodować czterech wersów pisanych wierszem za pomocą algorytmu Huffmana(tak, trzeba było policzyć wszystkie wystąpienia wszystkich liter), to pewnie i wynikiem mógłbym się pochwalić.
DarnokOk napisał/a: | Skończyłem bazę programu do obrazków logicznych. (Zainteresowanych odsyłam do Googla. Inne nazwy to Picross, nanogramy.) |
Tzn. w czym takie coś powstaje? Nadal mówisz tutaj o tym GameMakerze? Sam nie mam zielonego pojęcia o pracy z tym i tworzeniu gier za pomocą takich narzędzi; zawsze wydawało mi się, że to z jednej strony droga na skróty, a z drugiej - że i tak niewiele można w ten sposób wyczarować.
DarnokOk - 26 Kwiecień 16, 17:59
Ja natomiast ostatnio napisałem w C++ "Połącz cztery" i skończyłem zadanie od Siwego na spis więźniów w Berezie Kartuskiej. XD
Oba do zobaczenia na GitHubie, wraz z rozpoczętym Blackjackiem. https://github.com/DarnokOk
Przydałoby się jak już b. dobrze poznam C++ przyczynić się do jakiegoś open source'a, bo po to przecież GitHub jest, a ja się w ten sposób nauczę.
Lord Smerf napisał/a: | Tzn. w czym takie coś powstaje? Nadal mówisz tutaj o tym GameMakerze? |
Tak, cały kod napisałem w GMLu, czyli Game Maker Language. To język programowania jak łatwo się domyślić po nazwie, a Game Maker to środowisko w którym można ten język używać.
Lord Smerf napisał/a: | Sam nie mam zielonego pojęcia o pracy z tym i tworzeniu gier za pomocą takich narzędzi; zawsze wydawało mi się, że to z jednej strony droga na skróty, a z drugiej - że i tak niewiele można w ten sposób wyczarować. |
Jak to mniej więcej mówią ładne słowa, które gdzieś przeczytałem; nie jest ważne środowisko ani język programowania; najważniejszy jest programista. I jak to zwykle bywa; możesz w GMLu napisać co się wymarzy, nawet grę 3D, jeżeli masz taki zapał. (Choć do tego polecałbym Unity, albo jakiś mocny PCtowy engine.) Oczywiście są pewne ograniczenia GM, ale myślę, że takie studia indie korzystające z GM zdają sobie z nich sprawę i decydują się na to.
Droga na skróty jest i to dosyć spora. Piszesz grę raz, a już program martwi się o konwersję na inne platformy (o ile zakupiłeś ich licencję). Więc to duży plus, choć nie bez wad, bo zawsze pozostaje kwestia optymalizacji. Choć w przypadku projektów w Game Makerze to nie gra zbyt wielkiej roli. A tych platform jest naprawdę sporo i niestety swoją sporą cenę mają.
Jednak nie polecałbym tego programu do dużych projektów. Robi się tam bałagan i choć można to łatwo zorganizować, to już zmiana kodu pociąga za sobą mnóstwo kliknięć; czy to zmiana w obiektach, czy w pod-skryptach. (takie jakby funkcje.) Dlatego bardzo ważne jest, by jak najwcześniej przeprowadzać refaktoryzację. Być może to nie jest tylko bolączka GM, a też i innych środowisk.
Nie ukrywam, że siedzę w nim, bo dorwałem wersję Pro wraz z konwersją na Windowsa, Linuksa, Maca i Androida za 12 dolców. Pisałem o tym na ShoutBoxie, Humble Bundle daje czasami dobre oferty. xd (A to było prawie jak kradzież, bo dostałem klucze na ich stronę i Steama. Wolę nie podawać łącznej wartości.)
Siwy - 27 Kwiecień 16, 22:44
To, że jakimś cudem się kompiluje, nie znaczy, że skończyłeś .
DarnokOk - 28 Kwiecień 16, 17:07
Będę gryzł. XD To wszystko jest przemyślane, a nie cud, że się kompiluje; pisanie kodu jak profesjonalista jest do wyuczenia przede mną.
Jedyne co mam do poprawy to nazewnictwo, usunięcie using namespace std w klasach i poprzesuwać funkcje. Można spojrzeć: https://github.com/DarnokOk/Prisoners
Siwy - 28 Kwiecień 16, 21:07
No chyba nie . Mówiłem Ci, co masz do poprawienia. Wręcz cale klasy Prisoner i PrisonersManager są do napisania na nowo... Nazewnictwo i przestrzenie nazw to akurat mało ważne rzeczy na tym etapie Twojej nauki.
DarnokOk - 28 Czerwiec 16, 21:10
Trochę czasu minęło, więc myślę, że mogę powiedzieć co nieco.
Prisonersów odstawiłem. Poprawiłem tam co umiałem.
Obecnie programuję na Ubuntu 14.04. Bardzo sobie chwalę, szczególnie commitowanie na GitHuba z terminala. Nie wziąłem wersji nr 16, bo chciałem zachować kompatybilność z GameMaker'em, czego teraz żałuję. Mój plan to posiedzenie jeszcze kilka miesięcy w C++, a potem przejście na Javę; jej nauka (myślę, że przyjdzie z łatwością, po opanowaniu podstaw C++) i wykorzystanie frameworka libgdx (open-source i cross-platform!) do dalszego rozwoju. Niestety, idę w robienie gierek, ale przecież trzeba robić to co nas interesuje. Może w miarę nauki zainteresuje mnie inna dziedzina niż gry, zobaczymy.
Teraz na wykończeniu mam BlackJacka tekstowego (XD) w C++. Korzystam czasem z niektórych funkcji zawartych w standardzie C++11, szczególnie z zamiany stringów na int i w drugą stronę. A i enum class się znalazło. Podlinkowałem sobie też bibliotekę SimpleIni.h. Na GitHubie jest jej kod, więc polecam, jeśli ktoś będzie potrzebował obrabiać pliki .ini w Cepepie. To kolejne ciekawe doświadczenie, które się przyda, bo wkrótce dla kolejnego projektu będę próbował podlinkować bibliotekę Qt. Miejmy nadzieję, że mi się uda, bo nie chcę korzystać z - dla mnie - niewygodnego Qt Creatora. Code::Blocks mnie przekonał przejrzystością.
Wybrałem .ini zamiast .txt do przechowywania danych gry (w zasadzie to 3 zmienne, ale mniejsza z tym, robię to by się uczyć), bo w GameMakerze też z takich plików korzystałem. Bardzo dla mnie wygodne, dla niewtajemniczonych dane w pliku .ini są mniej więcej tak pogrupowane:
Kod: | [section]
key1=cos
key2=12
[section2]
key1=inne cos w ktorym moga byc spacje tez |
Co prawda taki plik jest podatny na modyfikacje z zewnątrz, ale na tym etapie nauki nie będę się zajmował szyfrowaniem itp. sprawami. Po za tym, w przyszłości raczej prędko gier multiplayer nie będę robił, więc kto będzie chciał, ten sobie pocheatuje i to jego sprawa.
Może kiedyś pobawię się w SQL albo/i XML. Na razie moim priorytetem po tym projekcie jest aplikacja okienkowa, jak już pisałem, korzystając z frameworka Qt, którego polecił mi Siwy. Jeśli ktoś ma jakiś pomysł, czym ten program może być, to jestem otwarty na propozycje, bo sam na razie pomysłu nie mam. Fajnie by było, gdybym nie musiał do zrobienia znać wielowątkowości; czyli nie może aplikacja działać w czasie rzeczywistym, że tak powiem, tylko po input-cie coś robić.
Myślę, że 1 lipca pojawi się na moim GitHubie kod BlackJacka. Staram się, żeby wyglądał jak najlepiej, ale na pewno jeszcze mnóstwo rzeczy jest do poprawy. Wrzucę wtedy tu link.
P.S.Na Ubuntu mogę kompilować bez IDE, za pomocą terminala, ale na razie nie mogę znaleźć jakiegoś ładnego edytora + raczej IDE jest wygodniejsze i się na taki krok nie zdecyduję.
[ Dodano: 5 Lipiec 16, 00:40 ]
Blackjacka pozostało mi jedynie wrzucić na GitHuba, bo jednak biorę się za nowe projekty, zamiast poprawiać brzydki kod ze starego programu.
Na pierwszy ogień idą warcaby w SFMLu i na razie... coś się, coś się popsuło.
http://i.imgur.com/HVSMgcG.gif
Na szczęście to jest do załatwienia szybciutko.
Dla niewtajemniczonych; chcę by zmiana rozmiaru okna nie wpływała negatywnie na szachownicę i by ta się powiększała/zmniejszała wraz z okienkiem.
Ale efekt przypadkowy fajny.
Edit:
Mogę iść spać spokojnie.
http://i.imgur.com/5XFVUcf.gif
Lord Smerf - 9 Lipiec 16, 23:08
No dobra, skoro i tak nikt na razie nie skomentował, to odważę się zadać głupie pytanie. Czym różni się przechowywanie danych w pliku .ini od .txt? Mnie nauczono tylko, jak operować na plikach tekstowych w C, więc mogę tylko zgadywać, że tutaj za to odpowiada jakaś dodatkowa biblioteka, a przewaga użycia .ini zamiast .txt polega głównie(tylko? Chyba nie, bo po co wtedy inny format pliku?) na oszczędności pracy programisty, który nie troszczy się o to, jak dokładnie zapisać tekst do pliku i jak go odczytywać, tylko korzysta z gotowych funkcji.
DarnokOk - 10 Lipiec 16, 12:44
Nie ma głupich pytań.
Na część odpowiedziałeś sobie, ale po kolei żebyś nie miał wątpliwości.
Tak, żeby odczytywać i zapisywać dane do plików .ini potrzeba zewnętrznej biblioteki; czy to własnoręcznie napisanej, czy czyjejś na odpowiedniej licencji. Ja wybrałem SimpleIni, a wybór jest dość spory i z pewnością nie każda biblioteka posiada wszystkie przydatne nam funkcje; trzeba tylko szukać i porównywać.
Korzystałem też z .txt, ale na dłuższą metę jest on po prostu niewygodny.
Lord Smerf napisał/a: | Czym różni się przechowywanie danych w pliku .ini od .txt? |
Jako, że plik .ini wygląda tak jak już pisałem w innym poście, czyli jest podzielony na sekcje i na "klucze", wystarczy nam pamiętać tę sekcję i klucz i do niego zapisać dane, albo je wczytać. W przypadku plików .txt musimy pamiętać linijkę, albo będziemy odkrywać koło na nowo i też robili w jakiś sposób podział na sekcje, używali słów kluczowych itd., by zadanie mieć ułatwione. Przynajmniej tak to widzę.
Lord Smerf napisał/a: | [...]przewaga użycia .ini zamiast .txt polega głównie(tylko? Chyba nie, bo po co wtedy inny format pliku?) na oszczędności pracy programisty, który nie troszczy się o to, jak dokładnie zapisać tekst do pliku i jak go odczytywać, tylko korzysta z gotowych funkcji. |
Zapis i wczytywanie są prostsze od tych w .txt, ale podstawowe założenia są podobne, tj. musimy mieć (oczywiście) ścieżkę do pliku, czy to relatywną czy bezwzględną. Jednak potem tylko w argumentach funkcji wczytującej lub zapisującej podajemy sekcję, klucz i co tam mamy zapisać, albo - w przypadku funkcji odczytującej dane - trzeci argument oznacza co tam ma się znaleźć w przypadku braku takiej sekcji i klucza. (Wtedy też chyba generuje tą sekcję, klucz, albo oba i wartość - ale nie jestem pewien, więc warto potestować) Jest to więc o wiele przyjaźniejsze, niż .txt, z którym pamiętam miałem raz spore problemy, by wsadzić linijkę pomiędzy dwoma innymi. Tu takich problemów nie ma, bo nie trzeba zarządzać kolejnością tych sekcji i kluczy - w istocie więc nie musimy wiedzieć jak dokładnie zapisać tekst do pliku.
Z SimpleIni z tego co pamiętam trzeba tylko pamiętać o zapisywaniu pliku na dysk, bo same operacje na nim w kodzie tego zapisu nie spowodują. (No i przecież bardzo dobrze, to my powinniśmy decydować kiedy zapisać ten plik; a może nie chcemy w ogóle.)
Zapewne jest też wiele innych funkcji w tej bibliotece, które mi nie były potrzebne.
Oczywiście .ini nie ma wad i nie w każdym przypadku się sprawdzi, np. gdy danych jest bardzo dużo. Wtedy też kluczy i sekcji będzie bardzo dużo, a jeśli kiedyś zapomnimy co w tym pliku jest przechowywane i pod jaką nazwą klucza (sekcję raczej łatwo się domyślić), to odnalezienie potrzebnych informacji może zająć długą chwilkę.
Choć z drugiej strony uważnie programując nie zgubi się żadnych danych i pliki .ini mogą być wtedy duże, jeśli nie zależy nam na rozmiarze na dysku. (myślę, że dotyczy to tylko naprawdę dużych projektów i nie ma sensu tym się przejmować, bo najważniejsza jest wygoda w programowaniu, a miejsca na dyskach jest coraz więcej)
Warto też poczytać, do czego zwykle się wykorzystuje pliki .ini . W końcu formatów jest od groma i zwykle każdy ma inne zastosowanie, a szkoda nie znać jakiegoś XMLa, jsona czy bina, by móc decydować, który wybrać. Z tego co jednak widziałem, ini wydaje się najprostszy, co niesie za sobą konsekwencje w postaci łatwości w obsłudze, ale też ograniczonych możliwości, bo nie możemy sobie grupować plików w podgrupki itd.
Ja na razie będę zapisywał tak jak dotychczas wszystko do plików .ini; rozdzielczość ekranu, ustawienia graficzne jeśli takie będą, zapisy gry, high score itd. bo wolę się skupić na nauce innych rzeczy, niż nowych formatów plików; na nie przyjdzie pora, gdy zechcę trochę urozmaicić kod.
Szczerze ja nie wiem czemu jest tyle formatów plików, ale przypuszczam, że służy to jako informacja dla różnych programów i użytkowników, jakie kodowanie czy coś tam jest. Lepiej przecież wygląda rozszerzenie .ini, niż w środku pliku informacja o tym, że jest to pliki inicjalizacyjny.
Jeśli o czymś zapomniałem to pytaj, mam nadzieję, że napisałem dość zrozumiale i składnie, bo już nie chce mi się tego kolejny raz czytać szukając powtórzeń i innych błędów. A napisałem też tyle, że się już pogubiłem w tym co pisałem i co nie.
P.S. Swoją drogą muszę kiedyś sprawdzić, czy klucz może przechowywać znaki [, ] i =.
//
Zastanawiam się nad nauką Javy po pokodzeniu chwili w SFMLu. Póki robię te gierki to chciałbym postawić na multiplatformowość, a open-source libgdx pod Javę właśnie na to pozwala. Także chciałbym poprogramować trochę na samego Androida. Mam sporo czasu na eksperymenty i chyba na to się zdecyduję - przecież też nagle C++ nie zapomnę, jeśli okaże się, że Java mi nie podpasuje. A warto wyrobić sobie własne zdanie, bo słyszałem, że Java jest dosyć powolna i nie nadaje się do większych projektów gier, gdzie potrzebna jest prędkość. A czy ja sam zamierzam robić coś dużego i zasobożernego? Musiałbym postradać zmysły.
Lord Smerf - 16 Lipiec 16, 18:24
Dzięki za wyczerpującą odpowiedź. Widzę, że nie zgadywałem tak źle.
Sam chcę na dniach zacząć się uczyć programowania obiektowego, od razu z Javą. Zamierzam korzystać z tego: http://wazniak.mimuw.edu....wanie_obiektowe ; jeśli znasz jakieś lepsze materiały, to chętnie usłyszę, co polecasz.
Jeśli chodzi o szybkość, to wydaje mi się, że w zastosowaniach komercyjnych mało kto zawraca sobie tym teraz głowę i najpopularniejsze są języki(bardziej) wysokopoziomowe, jak Ruby lub Python - w wielu sytuacjach bardziej ceni się czas programisty niż czas pracy programu.
DarnokOk - 16 Lipiec 16, 22:30
Dzięki za link, może się przydać, gdy będę przerabiał Javę.
Mam sporo kursów zapisanych, ale nie będę ich tu wrzucał, bo w praktyce i tak skończy się na tym, że skorzystam z jednego albo just-in-time learning.
Jeśli forma video Cię nie odstrasza, to bardzo polecany jest ten kanał:
https://www.youtube.com/u...mming/playlists
Choć ja pewnie zaglądnę tu tylko po multithreading, a podstawy znajdę gdzieś indziej. Wolę jednak tekstową formę.
Siwy polecał mi http://helion.pl/ksiazki/...nell,javpd9.htm żeby mieć usystematyzowaną wiedzę, ale nie wiem, czy podejmę się przebrnięcia przez kolejną książkę o programowaniu od podstaw - Symfonia C++ wystarczająco mnie zanudziła - przeczytałem od deski do deski i nie pamiętam już niuansów, ale ogólny pogląd mam. Raczej po takie kompendium sięgnę, gdy już chwilę poprogramuję a nie będę miał pomysłu co dalej szlifować - zawartość internetu wystarczy, by poznać składnię i niuanse Javy, skoro ogólny pogląd na programowanie mam.
Masz rację z tą szybkością. Przeczytałem wkrótce po napisaniu posta jak wygląda z nią sprawa i nie jest tak źle. Do gier 2D i prostych 3D (Raczej ich sam nie będę robił) wystarczy, biorąc pod uwagę obecne sprzęty. Zapewne to już mało aktualny żart programistów, z tą powolnością Javy.
Również stworzenie optymalnego programu w C++ nie równa się ładnemu kodowi, a przez to, że czytam "Czysty Kod", (Dość specyficzna książka, bo autor ostro wygłasza swoje opinie o wyglądzie kodu i często można się z tym nie zgodzić, ale możliwe, że po przeczytaniu całości zrozumiem sens takiego stylu pisania - polecam) zaczynam pomału na niektóre sprawy patrzeć inaczej niż dawniej i rzeczywiście; łatwiejszy w przeczytaniu, więc i późniejszej modyfikacji kod jest dużo bardziej wartościowy od optymalnego.
Jeśli w Javie nie uda mi się znaleźć żadnego stażu/praktyk/pracy, to będzie mi łatwo - ale też zajmie to czas - przejść na C# i dołożyć do tego .NET i dalej próbować dostać się do branży.
Ruby zdaje mi się jest do stron internetowych, więc nie chcę się go uczyć (choć framework Ruby on Rails staje się coraz popularniejszy) - taką już drogę wybrałem, że chciałbym robić aplikacje/programy, ew. gry, ale to będzie wymagało jeszcze masy pracy.
A Python... nie znam się za bardzo czego on dotyczy, ale to nie język jest najważniejszy - wystarczy mi się nauczyć tego co podałem wyżej i powinno być dobrze.
Jak chodzi o moje warcaby;
Same pionki jak i ich ruch jest gotowy, więc jeszcze spora droga przede mną, a napotkałem problem implementacyjny i nie wiem jak go rozwiązać. Opiszę go dokładniej, jeśli chcesz.
Pozdrawiam.
Siwy - 17 Lipiec 16, 00:43
Jeśli chodzi o Javę, to faktycznie polecam tamtą książkę. Uczy od podstaw (aczkolwiek jest napisana w taki sposób, że osoby znające już np. C++ mogą spokojnie opuścić tam rozdział chyba 1 a 2 i 3 przeczytać pobieżnie zwracając uwagę głównie na ramki mówiące o tym, co w Javie w danym temacie jest inne niż w C++).
Nie wiem jak ta książka sprawdzi się, jeśli nigdy nie programowałeś lub nie programowałeś obiektowo, ale sądzę, że jest niezła. Dla mnie - osoby z jakimś tam stażem w programowaniu w PHP i C++ - okazała się bardzo dobra do szybkiej nauki Javy (choć w sumie to programowałem już w niej ucząc się nawet nie pamiętam skąd, chyba nawet takie podstawy podstaw z jakiejś cienkiej książki, którą kiedyś kupiłem razem z "Komputer Świat Ekspert", a trochę o GUI z netu i dokumentacji). Jest dość gruba i nietania (aczkolwiek jak na książki o programowaniu - w normie), ale moim zdaniem opłaca się w nią zainwestować. Oprócz samego programowania w Javie jest też omówiona biblioteka Swing pozwalająca na tworzenie aplikacji okienkowych i tam jeszcze rozdziały o najważniejszych klasach do składowania danych, a nawet o wielowątkowości.
Choć muszę powiedzieć, że na pierwszy rzut oka ten kurs, który podlinkowałeś, wydaje się naprawdę fajny, bo jest też najpierw ogólne wprowadzenie do programowania obiektowego skąd to po co i na co. Tylko nie przeraź się diagramami UML .
DarnokOk - 21 Lipiec 16, 14:47
Hehe dobra.
Obejrzyjcie do końca, by zobaczyć efekt dla wygranej. Gif trwa minutę, a dotrwanie do efektu zajmie Wam niecałą minutę. Tło się zmienia, bo oznacza czyj ruch jest teraz. Minimalistycznie.
Mam nadzieję, że się odpali dla Was od początku, bo mi tu w podglądzie refresh nie resetuje gifa, tylko jest kontynuowany. Na gifie kawałek terminala, z mnóstwem komend byzanza, bo kombinowałem jak nagrać też myszkę i udało się.
Dość mam już tego projektu. Choć nie było tak źle z jego pisaniem - żadnej trudności implementacyjnej nie napotkałem, ale mój kod wygląda brzydko. Jedyne co mi dało w kość, to Kod: | unsigned short int pressedPiece = -1; |
Napisałem tak w kodzie... pewnie dopisałem ten minus jeden później i nie zauważyłem, że to unsigned.
No cóż, czas rozpocząć Javę, bo dwie książki, które zamierzam przeczytać mają przykłady w tym języku, a libgdx też jest ciekawy, jak wspominałem.
Lord Smerf - 22 Lipiec 16, 12:33
Czy w warcabach nie ma przypadkiem zasady, że jeśli można bić, to trzeba? Na gifie nie zauważyłem też testów tego, co się dzieje, kiedy gracz chce przesunąć pionek w niedozwolone miejsce lub wykonać ruch, kiedy jest tura przeciwnika. Poza tym zmieniające się tło bardzo razi w oczy, wystarczyłby do tego kolorowy kwadrat lub coś ładniejszego albo po prostu mignięcie tła, kiedy podjęto próbę zaburzenia właściwej kolejności.
DarnokOk - 22 Lipiec 16, 13:58
1. Co się dzieje, gdy ktoś się rozmyśli, spróbuje ruszyć się pionkiem przeciwnika. Na końcówce jest też pokazane wymuszone bicie - próba ruchu innym pionkiem:
2. Wymuszone bicie. Próba ruchu pionkami na niepodświetlone pola:
Co do tła, to można było to ładniej zrobić i to mignięcie o którym wspomniałeś na pewno wyglądałoby lepiej, ale wtedy akurat nie skupiałem się na wyglądzie zbytnio, tylko by działało. Dopiero kiedyś, jeśli będę planował coś komercyjnego, będę dbał o takie szczegóły.
Umieścić kod na GitHubie? Ale ostrzegam, że jest naprawdę kiepski, bo nie refaktoryzowany, a wzorców projektowych tam nie ma żadnych.
Mogę też spróbować wydać na Hubie release dla Windowsa.
|
|