kategoria: AMOS
[#1] [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage
Cześć, próbuję czasem coś podłubać w Amosie i po pierwszych próbach pod tytułem gra tekstowa i quiz o flagach Europy próbuję czegoś następnego. Padło na zaadaptowanie gry karcianej Arcomage z Might and Magic 7. Najbardziej mi zależy na rozwijaniu podstawowych umiejętności, chciałbym żeby działał "silnik", grafika to bieda, wicie rozumicie.

OSTRZEGAM że to słabe jest :) i bardzo potrzebuję pomocy żeby było lepiej.
Zanim opis to najpierw dwa obrazki:
- ekran "gry" po dobraniu ręki link
- ekran "gry" po pierwszym zagraniu link



Określiłem sobie zmienne do surowców, przechodzę do losowania 6 kart do ręki i wyświetleniu ich na ekranie, tutaj zaczyna się mój problem gdyż po staremu jadę za pomocą IF'ologii stosowanej wszelakiej, co powoduje milion linijek kodu a nie bardzo ogarniam jak (i czy w ogóle) da się to zrobić inaczej. Przykład kodu:

Procedure REKASTARTOWA
PIERWSZA:
X=Rnd(9)+1    'Poki co pracuje na grupie badawczej 10 kart
Paste Bob 5,150,X : SLOT1=X   'zmienne SLOT określają czy dane miejsce na ręce jest już zajęte i jaka tam jest karta
If X=1 Then KARTA1=1    'zmienne KARTA - bo każdą kartę można wylosować raz
If X=2 Then KARTA2=1
If X=3 Then KARTA3=1
...

DRUGA:
X=Rnd(9)+1
IF X=1 and KARTA1=1 Then Goto DRUGA  'przy dublu wracam do losowania
IF X=2 and KARTA2=1 Then Goto DRUGA
IF X=3 and KARTA3=1 Then Goto DRUGA
...
Paste Bob 55,150,X : SLOT2=X
If X=1 Then KARTA1=1 
If X=2 Then KARTA2=1
If X=3 Then KARTA3=1
...


i tak po kolei aż do wylosowania 6 kart do ręki. W tym momencie pracując na grupce 10 kart to nie ma dramatu, ale w sumie gra ma ponad 100 wzorów kart, co powoduje rozlazłość tego prostackiego kodu.

Później mam procedurkę Zagranie, która ma wywołać zadziałanie konkretnej karty na ręce
i znów:

Procedure ZAGRANIE
Wait Key
If Key State(1) and SLOT1=1 Then Proc KARTA1
If Key State(1) and SLOT1=2 Then Proc KARTA2
If Key State(1) and SLOT1=3 Then Proc KARTA3
...
If Key State(2) and SLOT1=1 Then Proc KARTA1
If Key State(2) and SLOT1=2 Then Proc KARTA2
If Key State(2) and SLOT1=3 Then Proc KARTA3
...

i tak do Key State(6), więc znów przy ponad 100 kartach to są kilometry kodu.

Potem już są procedurki KARTA1,2,3 i tu już jest przyjemniejsza robota czyli wykonywanie zagrania, zapłacenie kosztu.

W dalszych planach zagranie przeciwnika, sprawdzenie warunków wygranej lub przegranej,
poszerzanie bazy kart, rozwiązanie problemu braku możliwości zagrania z powodu braku surowców i inne drobne problemy o których teraz nie pamiętam.

I teraz do sedna - te wszystkie kilometry kodu to bym najchętniej rozwiązał czymś w stylu
Procedure REKASTARTOWA
X=Rnd(9)+1
If KARTA(X)=1 Then Goto DRUGA


ale z tego co rozumiem to nie da się zrobić takiego miksu Stringa i liczby.
A może sie da tylko o tym nie wiem?
Znajomy programista niezwiązany z Amigą podpowiedział mi tylko że powinno się
dać to ogarnąć za pomocą tablic, ale z książki nic nie kumam jak to zrobić.
Podpowie ktoś coś? :)

PS. Można cisnąć bekę, wiem że kiepskie, nie obrażę się :P
[#2] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Lucus, post #1

W AMOSie, tak jak innych BASICach istnieje polecenie ON n PROC:

ON n GOSUB etykieta1, etykieta2, ...
ON n GOTO etykieta1, etykieta2, ...
ON n PROC procedura1, procedura2, ...

Używana jest w przypadku gdy wartość "n" decyduje o przeskoku do odpowiedniego miejsca w programie.

Spowoduje to zredukowanie wielu IFów.

Taką sekwencję IFów:

If Key State(1) and SLOT1=1 Then Proc KARTA1
If Key State(1) and SLOT1=2 Then Proc KARTA2
If Key State(1) and SLOT1=3 Then Proc KARTA3

Możesz zastąpić przez:

IF KeyState(1)
ON SLOT1 PROC Karta1, Karta2, Karta3
END IF

Jest to poglądowy przykład. Powinien pokazać Ci ogólną ideę.

Ostatnia aktualizacja: 18.11.2019 10:10:36 przez Hexmage960
[#3] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Hexmage960, post #2

Dzięki, na pewno się przyda!
[#4] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Lucus, post #3

Tu zajrzyj może coś znajdziesz.

Ostatnia aktualizacja: 18.11.2019 11:52:08 przez jimiche
[#5] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@jimiche, post #4

omg kopalnia wiedzy, dzięki!
[#6] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Lucus, post #5

to co piszesz wcale nie bedzie proste bo interpretacja tekstu na kartach to w zasadzie rozbudowany "silnik" gry w zaleznosci od zlozonosci mechaniki tej karcianki.

a losowanie bez powtarzania robi sie algorytmem na tablicy

Dim ELEMENTY(99)

For i=0 to 99
ELEMENTY(i)=i
Next i

ilosc=99
...
...
Losowanie:
If ilosc>0
los=Rnd(ilosc)
Karta=ELEMENTY(los)
ELEMENTY(los)=ELEMENTY(ilosc)
Dec ilosc
End If
[#7] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Lucus, post #1

Losowanie 6 kart z 10 możliwych, bez powtórzeń, w Amosie wyglądałoby mniej-więcej tak:
Dim KARTA(5)

For I=0 To 5
   KARTA(I)=-1
Next I
POWTORZ=False
L=0

Randomize(Timer)

Repeat 
   X=Rnd(9)
   For I=0 To L
      If X=KARTA(I) Then POWTORZ=True : I=L
   Next I
   If POWTORZ=False Then KARTA(L)=X : Inc L
   Print X,L
   POWTORZ=False
Until L>=6

For I=0 To 5
   Print KARTA(I)
Next I


Masz tu tylko jedną tablicę jednowymiarową KARTA().

Ostatnia aktualizacja: 18.11.2019 13:43:05 przez Ocelot

Ostatnia aktualizacja: 18.11.2019 13:49:31 przez Ocelot
[#8] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Ocelot, post #7

Trochę się pobawiłem - myślę, że mogłoby to wyglądać jakos tak:
Rem poczatkowy stan posiadania, najpierw gracz, potem wrog 
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Rem Dane kart w kolejnosci: nr karty (dla ulatwienia wpisywania),  
Rem zoo,bestie,magia,gemy,kuznia,cegly,wieza,mur - najpierw gracz  
Rem - potem wrog 
Data 0,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 1,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 2,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 3,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 4,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 5,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 6,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 7,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 8,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 9,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 10,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 11,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 12,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 13,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 14,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 15,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 16,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 17,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 18,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0
Data 19,1,0,2,0,0,0,0,0,-2,1,-2,0,0,0,0,0

Rem okresla ilosc kart w talii, musza byc zedefiniowane w sekcji Data  
ILOSC_KART=20

Dim TALIA(ILOSC_KART-1),KARTA(5),KARTY(ILOSC_KART-1,16),STANGRY(15)
Global TALIA(),KARTA(),KARTY(),STANGRY(),ILOSC_KART

Randomize(Timer)

Rem wczytywanie stanu poczatkowego 
For I=0 To 15 : Read STANGRY(I) : Next I

Rem wczytanie kart do tablicy KARTY()  

For I=0 To ILOSC_KART-1
   Read KARTY(I,0)
   For J=1 To 16
      Read KARTY(I,J)
   Next J
Next I

For I=0 To ILOSC_KART-1 : TALIA(I)=I : Next I

For I=0 To 5 : KARTA(I)=-1 : Next I

LOSUJ
WYSWIETL

Procedure LOSUJ
   For I=0 To 5
      If KARTA(I)=-1
         Repeat 
            POWTORZ=False
            X=Rnd(ILOSC_KART-1)
            If TALIA(X)<>-1
               KARTA(I)=X : TALIA(X)=-1
            Else 
               POWTORZ=True
            End If 
         Until POWTORZ=False
      End If 
   Next I
End Proc

Procedure ZAGRAJ[NR]
   For I=1 To 16
      STANGRY(I-1)=STANGRY(I-1)+KARTY(NR,I)
   Next I
End Proc

Procedure WYSWIETL
   Cls 0 : Curs Off 
   Pen 2 : Paper 0
   Print "GRACZ:                   WROG:"
   Print "   ZOO: ";STANGRY(0);"                ";"   ZOO: ";STANGRY(8)
   Print "Bestie: ";STANGRY(1);"                ";"Bestie: ";STANGRY(9)
   Print " Magia: ";STANGRY(2);"                ";" Magia: ";STANGRY(10)
   Print "  Gemy: ";STANGRY(3);"                ";"  Gemy: ";STANGRY(11)
   Print "Kuznia: ";STANGRY(4);"                ";"Kuznia: ";STANGRY(12)
   Print " Cegly: ";STANGRY(5);"                ";" Cegly: ";STANGRY(13)
   Print " Wieza: ";STANGRY(6);"                ";" Wieza: ";STANGRY(14)
   Print "   Mur: ";STANGRY(7);"                ";"   Mur: ";STANGRY(15)
   Print 
   Print "KARTY: "
   For I=0 To 5
      Print KARTA(I)
   Next I
End Proc


Ostatnia aktualizacja: 18.11.2019 16:24:02 przez Ocelot
[#9] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Hexmage960, post #2

Wracam z tematem, udało mi się w pewnym zakresie popchnąć projekt do przodu, zakodowałem nieco ponad 80 procedur wykonujących działanie kart, procedurkę aktualizującą i wyświetlającą stan zasobów i tak dalej, całość w pętli więc da się wykonać zagranie, zobaczyć efekt, dobrać kolejną kartę i grać dalej. Problem w tym, że jestem w stanie to zrobićn na bazie około 30 kart, gdyż w procedurze od zagrania mam za poradą kolegi Hexmage
Procedure ZAGRANIE
Wait key
If keystate(1)
On SLOT1 Proc KARTA1,KARTA2,...KARTA30
End If

rzecz w tym, ze nie jestem w stanie wypisać w linii ciągu do KARTA80 bo dostaję po drodze komunikat "line too long", złamanie do kolejnej linii nie działa, próbowałem zrobić
On SLOT1<30 Proc ...
On SLOT1>29 and SLOT1<60 Proc

i tak dalej ale tez nie działa, pomożecie?

Btw. podręcznik Easy Amos USer Guide mówi cytuję:
"Of course you can have as many values triggering off jumps to as many procedures as you want" no ale sie okazuje że chyba jednak nie, albo ja nie ogarniam i ktoś mnie musi znów uświadomić :)
[#10] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Lucus, post #9

A nie mozesz uzyc K1 zamiast KARTA1, .... K80 zamiast KARTA80?
[#11] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Don_Adan, post #10

Mogę, wtedy się zmieści coś koło 50 czy 60 :)

Ostatnia aktualizacja: 01.12.2019 21:33:53 przez Lucus
[#12] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Lucus, post #11

To jeszcze skroc zamiast K10,k11,k12... daj KA, KB, KC itd
[#13] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Don_Adan, post #12

Powiedzmy, że na zaistniałą sytuację jest to rozwiązanie. Jednak w sumie gierka ma 102 wzory kart więc w perspektywie dalszego pisania (czy innych śmiesznych programików w przyszłości) znów kiedyś miejsca braknie.
[#14] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Lucus, post #13

Tak jak powiedział Twój znajomy tu aż się prosi o tablicę, a dokładnie tablicę wskaźników na procedury, ale jak rozumiem takiego czegoś w AMOSie nie ma?
Skoro ON PROC nie daje rady, to możesz wrócić do ifów, ale zamiast pisać ich 102 ręcznie to napisać sobie prosty program który ten kod wygeneruje, a Ty  go tylko copy/paste zrobisz
Inna rzecz jest taka że czy Ty na pewno dla każdej karty musisz mieć osobną procedurę? Nie wystarczy jej numer i jedna procedura, która na jego podstawie wszystko zrobi?
[#15] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Lucus, post #11

Nie wiem jak dzielić linijkę w AMOSie na części, ale jest szereg rozwiązań na zaistniałą sytuację.

Wcześniej sprawdź, czy rzeczywiście potrzebujesz aż tyle unikalnych procedur. Może niektóre z nich wykonują coś podobnego i można załatwić różnorodność przez parametry procedur, albo zrobić parę IFów wewnątrz.

Jeśli jednak potrzebujesz ich dużo, to można pogrupować te mnóstwo procedur na kilka grup (klas), np. Grupa1, Grupa2, Grupa3.

Np. w taki sposób: Dzielisz zmienną Slot1 przez dziesięć, żeby określić grupę.

X = SLOT1/10
On X Proc GRUPA1, GRUPA2, GRUPA3

W każdej grupie wyciągasz resztę z dzielenia (modulo) przez 10, by określić konkretną procedurę obsługi kart.

Procedure GRUPA1
X = SLOT1 MOD 10
ON X Proc Karta1, Karta2, Karta3, ..., Karta10
End Proc

Procedure GRUPA2
X = SLOT1 MOD 10
ON X Proc Karta11, Karta12, Karta13, ..., Karta20
End Proc

SLOT1 w tej sytuacji musi być zmienną globalną, chyba że zastosujesz ON X GOSUB i etykiety zamiast ON X PROC.
[#16] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@smith, post #14

Odnośnie tablicy:
Dim KARTA(16)
LOSOWANIE1:
X=Rnd(15)+1 
Paste Bob 5,150,X : KARTA(X)=1 : SLOT1=X
LOSOWANIE2:
X=Rnd(15)+1 : If KARTA(X)=1 Then Goto LOSOWANIE2 Else 
Paste Bob 55,150,X : KARTA(X)=1 : SLOT2=X
LOSOWANIE3:
X=Rnd(15)+1 : If KARTA(X)=1 Then Goto LOSOWANIE3 Else 
Paste Bob 105,150,X : KARTA(X)=1 : SLOT3=X
LOSOWANIE4:
X=Rnd(15)+1 : If KARTA(X)=1 Then Goto LOSOWANIE4 Else 
Paste Bob 155,150,X : KARTA(X)=1 : SLOT4=X
LOSOWANIE5:
X=Rnd(15)+1 : If KARTA(X)=1 Then Goto LOSOWANIE5 Else 
Paste Bob 205,150,X : KARTA(X)=1 : SLOT5=X
LOSOWANIE6:
X=Rnd(15)+1 : If KARTA(X)=1 Then Goto LOSOWANIE6 Else 
Paste Bob 255,150,X : KARTA(X)=1 : SLOT6=X


W ten sposób losuję numery wylosowanych kart, umieszczam je w zmiennych slot1-6 żeby mieć się do czego odnieść przy wstawianiu boba w konkretne miejsce na ręce, oraz mam naszykowane do zagrania za pomocą On ... Proc, dlatego mam karty potem w osobnych procedurach, [edit] po chwili zastanowienia skumałem, w sumie można by zrobić z mniejszą ilością procedur, będę dłubać [/edit]
Nie wiem też o co chodzi z tablicą wskaźników na procedury, ale tak jak pisałem wielu rzeczy jeszcze nie wiem, możesz troszkę rozjaśnić?
Powrót do Ifów zostawiam jako ostateczną ostateczność :)

Ostatnia aktualizacja: 01.12.2019 22:31:35 przez Lucus
[#17] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Hexmage960, post #15

To wygląda na bardzo ciekawe rozwiązanie, potestuję, dzieki ponownie :)
[#18] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Lucus, post #16

Nie wiem też o co chodzi z tablicą wskaźników na procedury, ale tak jak pisałem wielu rzeczy jeszcze nie wiem, możesz troszkę rozjaśnić?


Tak jak w tablicy możesz pod kolejnymi indeksami przechowywać liczby czy teksty, tak samo można w niej przechowywać procedury (dokładnie to wskaźniki na nie) i wtedy pod danym indeksem znajduje się dana procedura, gdy chcesz ją wykonać to pobierasz ją z tablicy i wykonujesz z określonymi parametrami. Jak pisałem nie wiem czy AMOS na to pozwala, ale raczej nie sądzę.
[#19] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@smith, post #18

To może żywym kodem, jak to robimy w cywilizowanym świecie języka C:

// tablica z 5 funkcjami, indeksowana od 0
// oczywiście `fn` i reszta są zdefiniowane gdzieś wcześniej w kodzie
// tFunction to typ pojedynczego elementu tablicy
// w tym wypadku określa co funkcja przyjmuje za argumenty i jaką wartość zwraca
// wszystkie muszą mieć to tak samo!
tFunction myFunctions[] = {fn, fnOther, fnOtherOther, fn4, fn5};
...
i = randomFromRange(0, 4); // wylosuj sobie liczbę od 0 do 4
myFunctions[i](); // weź i-tą funkcję z tablicy i ją wywołaj


Ostatnia aktualizacja: 01.12.2019 23:03:47 przez teh_KaiN
[#20] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@teh_KaiN, post #19

typedef void (*tFunction)();

[#21] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@smith, post #18

Pozwala, pozwala - tylko nie z procedurami. Można zastąpić procedury podprogramami (ETYKIETA: ciało podprogramu Return). Wywołuje się takie cuś instrukcją Gosub etykieta, gdzie etykieta może być zmienną tekstową lub nawet elementem tablicy tekstowej. Jedyny problem to to, że zmienne wewnątrz podprogramów (w przeciwieństwie do zmiennych wewnątrz procedur) są globalne - ale może to być nawet zaletą - zwłaszcza, że instrukcja ON .. Proc to straszna bieda i nie pozwala na używanie procedur z parametrami.
[#22] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Ocelot, post #21

Nic nie stoi na przeszkodzie żebym zastąpił procedurki etykietami, wyjdzie na mniej więcej to samo, po prostu wydawało mi się ze za pomocą procedur będzie to bardziej przejrzyste. Zmienne i tak mam wszystkie global zadeklarowane zaraz na początku.
[#23] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Lucus, post #9

Spróbuj inaczej. Powiedzmy, że w linii zmieści się 20 nazw.
On SLOT1 Proc p1,p2...
On SLOT1-20 Proc p20,p21...
On SLOT1-40 Proc p30,p31...
[#24] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@cholok, post #23

Na razie próbowałem tak:

If keystate(1) and SLOT1<21 
On SLOT1 Proc K1,K2...,K20
End IF
if keystate(1) and SLOT1>20 and SLOT1<41 : SLOT1=SLOT1-20
On SLOT1 Proc K21,K22...K40 
End if


Ale jeszcze się potrafi posypać i dobierać jakieś dziwne akcje typu dwie naraz albo w ogóle nie dobrać, muszę poszperać w kodzie może jeszcze gdzieś coś popieprzyłem, no chyba że powyższe też jest wadliwe a jeszcze o tym nie wiem :)

Ostatnia aktualizacja: 03.12.2019 18:30:13 przez Lucus
[#25] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Lucus, post #24

typu dwie naraz


Musisz zastosować konstrukcję if ... else if ... else if ... bo inaczej będzie sprawdzać każdy z warunków - będzie jazda jak będziesz gdzieś po drodze modyfikował wartość SLOT1
[#26] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Lucus, post #24

Jak zakodujesz swoja gierce, to mozesz potem sprobowac zrobic karcianke w takim stylu.
https://www.youtube.com/watch?v=-t8svPoYpcM

Amiga i AMOS powinny dac rade, zeby podobna gra byla grywalna. Tylko potrzebne sa dobre pomysly na scenariusz, mapy i karty.
[#27] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Don_Adan, post #26

Karcianka do której co chwilę wracam:
Crazy8
[#28] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Don_Adan, post #26

Kolegom dziękuję za sugestie, na szczęście mam plan działania na najbliższe pół roku a pewnie i tak się nie wyrobię :)

Problem za długich wierszy chyba udało się rozwiązać, podzieliłem na grupy zgodnie ze wskazówkami, chociaż pojawiły się różne komplikacje typu inaczej mi amos reaguje na "if... else if.. else if" pisane w jednej linii, inaczej gdy rozbijam na kolejne linie, sypie czasami errory różne i podłużne.
Tak jak pisałem wcześniej próbowałem za pomocą "slot1<... and slot1>..." i też okazało mi się że odwołując się do etykiet potrafi się sypać, a teraz porobiłem to samo ale kierując do procedur zamiast etykiet i wygląda na to że działa.

I teraz dopiero pojawia się prawdziwy problem o którym wcześniej nie pomyślałem, bo o ile zagrywanie samodzielne to tam nic specjalnego, o tyle zagrania przeciwnika to już dla mnie wyzwanie. Można by zrobić oczywiście przeciwnika który po prostu robi losowe zagranie na które go stać w surowcach, tyle że to się nadaje na pierwszą partyjkę typu tutorial. No nic, daleka droga jeszcze do pokonania.
[#29] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Lucus, post #28

Sztuczna Inteligencja zawsze jest problemem w kazdej grze, zbyt glupi lub zbyt schematyczny przeciwnik komputerowy powoduje, ze nie chce sie juz pozniej grac w dana gre.
[#30] Re: [AMOS] Moje bieda-kodowanie "silnika" gry Arcomage

@Lucus, post #28

Jeśli mogę coś doradzić... zrób najpierw tryb dla dwóch graczy. Potem ten tryb zmodyfikujesz tak że komputer będzie "klikał grę" za drugiego gracza. W grze turowej o wiele łatwiej jest zrobić AI, bo możesz dowalić skomplikowaną funkcję decyzyjną i nikt się nie obrazi że gra zawiśnie na ułamek sekundy. ;)
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