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