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 ...
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 ...
Procedure REKASTARTOWA X=Rnd(9)+1 If KARTA(X)=1 Then Goto DRUGA
@Lucus, post #1
ON n GOSUB etykieta1, etykieta2, ... ON n GOTO etykieta1, etykieta2, ... ON n PROC procedura1, procedura2, ...
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 KeyState(1) ON SLOT1 PROC Karta1, Karta2, Karta3 END IF
@Lucus, post #5
@Lucus, post #1
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@Ocelot, post #7
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@Hexmage960, post #2
Procedure ZAGRANIE Wait key If keystate(1) On SLOT1 Proc KARTA1,KARTA2,...KARTA30 End If
On SLOT1<30 Proc ... On SLOT1>29 and SLOT1<60 Proc
@Lucus, post #13
@Lucus, post #11
X = SLOT1/10 On X Proc GRUPA1, GRUPA2, GRUPA3
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
@smith, post #14
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
@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ć?
@smith, post #18
// 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@smith, post #18
@cholok, post #23
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
@Don_Adan, post #26
@Lucus, post #28