; ============================================================ ; Faltung schalten alle Faltungen schalten ;-[-AA_INIT -------------------------------------------------- AA_INIT: EnableExplicit ;zusätzliche Bibliothek laden UseJPEGImageDecoder() ;UseJPEGImageEncoder() UsePNGImageDecoder() ;} ---------------------------------------------------------- ;-[-AB_Prozeduren_anmelden ----------------------------------- ;Prozeduren anmelden Declare ABRECHNUNG() Declare AUTOR() Declare MELDAUTOR() Declare MELDUNTEN(meldu$) Declare MELDULOESCH() Declare INFO_0() Declare INFO_1(infotafel,infomax) Declare MAUSZONE() Declare MEZU(pos) Declare MEZU_02() Declare MEZU_03() Declare MEZU_04() Declare MEZU_05() Declare MEZU_06() Declare COZU(sp) Declare COZU_01(sp) Declare WAITACTION() Declare BILDBAU() Declare SYS_ACTION(nr,event) Declare SYS_FARBE() Declare SYS_BILDER() Declare ZE_HIGRU() Declare ZE_SPIELER(nr,art) Declare ZE_AKTION(nr,art) Declare ZE_ZUGNR() Declare ZE_ROHBILD() Declare ZE_BUTTON(nr,tx,flp) Declare ZE_BLD_0(zx,zy) Declare ZE_BLD_1(zx,zy) Declare ZE_BLINK(qx,qy) Declare PRF_ANGRIFF(cux,cuy) Declare PRF_SIEG(sp) Declare PRF_CITYZAHL(sp) ;} ----------------------------------------------------------- ;-[-AC_Variablendeklarationen -------------------------------- ;Variablendeklarationen ; Bilder Enumeration #bld00 ; Hintergrundbild #bld01 ; Spielbild 1 included binary; Bild für Spielkacheln #bld02 ; Spielbild 2 included binary; hier nicht #bld03 ; Spielbild 3 included binary; hier nicht #bld04 ; spielbild 4 included binary; hier nicht #bld05 ; Programm-Icon included binary #bld11=11 ; 01. Teilbild für Bildbau; w #bld12=12 ; 02. Teilbild für Bildbau; i #bld13=13 ; 03. Teilbild für Bildbau; i #bld14=14 ; 04. Teilbild für Bildbau; i #bld15=15 ; 05. Teilbild für Bildbau; i #bld16=16 ; 06. Teilbild für Bildbau; i #bld17=17 ; 07. Teilbild für Bildbau; f #bld18=18 ; 08. Teilbild für Bildbau; f #bld19=19 ; 09. Teilbild für Bildbau; f #bld20=20 ; 10. Teilbild für Bildbau; f #bld21=21 ; 11. Teilbild für Bildbau; f #bld22=22 ; 12. Teilbild für Bildbau; f EndEnumeration Enumeration 100 ;Button-bilder #but01 ;rot #but02 #but03 ;lila #but04 #but05 ;grün #but06 #but07 ;blau #but08 EndEnumeration Enumeration ; Fonts #font00 #font01 #font02 #font03 #font04 #font05 #font06 #font07 EndEnumeration ; Enumeration ; Gadgets ; #gdg00 ; #gdg01 ; #gdg02 ; #gdg03 ; EndEnumeration ; Enumeration 200 ; Tasten ; #kb000 ; EndEnumeration Global autor$ #TITEL$="EK-CROWN" #HBLD0$="EK-CROWN0.jpg" #HBLD1$="EK-CROWN1.png" #HBLD2$="EK-CROWN2.jpg" #ICON$ ="EK-CROWN.ico" AUTOR() #xadd = 27 ; x-Addition (vom linken Rand bis zum ersten Klotz) #yadd = 12 ; y-addition (vom oberen Rand bis zum ersten Klotz) #klotz=95 ; Größe eines Spielfeldes #win1=1 ; ID des benutzten Fensters #win1_x=1280 ; Fenstergrösse x (0-1219) #win1_y=720 ; fenstergrösse y (0-719) Global Dim gg(40) ; globale Variablen Global Dim fa(40) ; Farbdefinitionen Global Dim bb(12,8,15) ; Bild (7 Zeil; 11Sp; 15Eigenschaften) Global Dim sp(4,8) ; Spieler-Array (4 Spieler; 5 werte pro Spieler) ; Spieler 4 ist Mensch;W1=spielernr, w2=farbnr, Global Dim pos(5) ; Reihenfolge der Spieler pos(1)=3 => spieler 3 steht an pos1 Global Dim zm(120,4) ; Zugmöglichkeiten: 1=quote; 2=art der aktion; 3=qx, 4=qy ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Global mausx,mausy,mausc,mausz,taste Global cux,cuy,wy,wx Global titel$ mausx=0 ; Maus X- Pos mausy=0 ; Maus y-Pos mausc=0 ; Maus-Click 1=li; 2=re mausz=0 ; Maus-Zone (Bildschirmbereich) taste=0 ; gedrückte Taste in Verbindung mit ; Modifiern; shift=1000, alt=2000 ;ctrl=4000 cux=0 ; cursorposition x cuy=0 ; cursorpos y Define event,zuf,qx,qy,qz Define tt$ ;gg( 1) Endeschalter 0= im Spiel 9= Abbruch durch Escape ;gg( 2) aktiver Spieler ;gg( 3) Zustand des Fensters; 0=normal; 1=minimiert; 2=maximiert ;gg( 4) highlighted im ActionMenue ;gg( 5) Zugnummer ;gg( 6) rot bei Angriff ;gg( 7) schwarz bei angriff ;gg( 8) Dauerangriff ein/aus ;gg( 9) cux bei dauerangriff ;gg(10) cuy bei dauerangriff ;gg(11) normaler delay (1250) verkürzter delay, ;wenn mensch bereits ausgeschieden (500) ;gg(12) ;gg(13) ;gg(14) ;gg(15) ;gg(16) ;} ------------------------------------------------------------- ;-[-AD_Schriften laden --------------------------------------- LoadFont(#font00,"Bookman Old Style",18,#PB_Font_Bold ) LoadFont(#font01,"Bookman Old Style",16,#PB_Font_Bold ) LoadFont(#font02,"Bookman Old Style",22,#PB_Font_Bold ) LoadFont(#font03,"Arial",18) LoadFont(#font04,"Arial",32) LoadFont(#font05,"Verdana",12) LoadFont(#font06,"Verdana",14,#PB_Font_Bold ) LoadFont(#font07,"Arial Black",22) ;} ---------------------------------------------------------- ;-[-AE_Hauptfenster öffnen ----------------------------------- ; Openwindow mit Canvas ;====================== ; OpenWindow(0,300,100,1024,768,titel$,#PB_Window_SystemMenu |#PB_Window_MinimizeGadget) ; CanvasGadget(#gdg00,0,0,1024,768,#PB_Canvas_ClipMouse|#PB_Canvas_Keyboard) ; AddKeyboardShortcut(0,#PB_Shortcut_All, #kb000) ; SetActiveGadget(#gdg00) ;wichtig: Tastatur funktioniert sonst nicht ;Openwindow mit windowed screen ; ============================= If InitSprite()=0 MessageRequester("Fehler","Sprite-System kann nicht geöffnet werden", 0) End EndIf If InitKeyboard() = 0 MessageRequester("Fehler","Keyboard kann nicht geöffnet werden", 0) End EndIf If InitMouse()=0 MessageRequester("Fehler","Maus kann nicht aktiviert werden",0) End EndIf OpenWindow(#win1,0,0,#win1_x,#win1_y,#titel$,#PB_Window_SystemMenu | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered) OpenWindowedScreen(WindowID(#win1),0,0,#win1_x,#win1_y,#True,0,0) SetFrameRate(50) SYS_FARBE() SYS_BILDER() ;Bilder initialisieren gg(3)=0 ; Zustand Fenster normal =vorgegebene Größe ; 0= normal, vorgegebene Größe ; 1= minimiert; 2=maximiert ;} ------------------------------------------------------------- ; ============================================================ ;-[-BA_VORSPIEL ---------------------------------------------- BA_VORSPIEL: ClearScreen(RGB(0,0,0)) ZE_HIGRU() MELDAUTOR() MELDUNTEN("Information gewuenscht ? /") taste=0:WAITACTION() MELDULOESCH() If taste= 27:gg(1)=9 :EndIf If taste= 74:INFO_0():EndIf ;} ----------------------------------------------------------- ;-[-BB_ANFANG ------------------------------------------------ BB_ANFANG: ZE_HIGRU() MELDAUTOR() ZE_ROHBILD() ZE_BUTTON(1,1,0) ;spielerarray normalisieren For qx=1 To 4 For qy=1 To 8 sp(qx,qy)=0 Next qy Next qx For qx=1 To 4 sp(qx,1)=qx ; Position in der Reihenfolge sp(qx,2)=24+qx ; farbe=fa(25) f. Sp1 bis fa(28) f.Sp4 sp(qx,3)=3 ; Grundausstattung mit 3 Gold am Spielanfang sp(qx,4)=1 ; zukünftiges Gold(bei spielbeginn nur 1 Feld besetzt Next qx BILDBAU() gg(1)=0 ; Endeschalter; im Spiel gg(2)=pos(1) ; aktiver Spieler gg(4)=0 ; Menu-high; =>keine Aktion ausgewählt gg(5)=0 ; Zugnummer zu Beginn des Spieles gg(11)=1250 ; normale delayZeit; bel Verkürzung 500 ;Reihenfolge der Spieler bestimmen pos(1)=1:pos(2)=2:pos(3)=3:pos(4)=4:pos(5)=5 RandomizeArray(pos(),1,4) sp(pos(1),1)=1 sp(pos(2),1)=2 sp(pos(3),1)=3 sp(pos(4),1)=4 ; --- ZE_SPIELER(pos(1),2) ; sp1 ist highlighted ZE_SPIELER(pos(2),1) ZE_SPIELER(pos(3),1) ZE_SPIELER(pos(4),1) ZE_ZUGNR() gg(2)=1 ; der erste Spieler in der Reihenfolge ist dran gg(4)=2 ; Aktion 2 (city bauen ist vorgewählt ; --- MELDUNTEN("Jetzt geht's los ") taste=0:taste=WAITACTION() If taste=27:gg(1)=9 :EndIf MELDULOESCH() If gg(1)=9:Goto DA_NACHSPIEL:EndIf ;} ----------------------------------------------------------- ; ============================================================ ;-[-CA_HAUPTSPIEL -------------------------------------------- CA_HAUPTSPIEL: wy=WindowHeight(#win1) ; Bestimmung der tatsächlichen Fenstergröße y wx=WindowWidth(#win1) ; Bestimmung der tatsächlichen Fenstergröße x If wx<>#win1_x:gg(3)=2:EndIf ; Größe des Spielfensters 0=normal;1=min;2=max gg(5)+1:ZE_ZUGNR() ; Zugnummer anzeigen taste=0 Repeat event=WindowEvent() If event SYS_ACTION(1,event) Else Delay(5) EndIf event=0 If pos(gg(2))<4:COZU(pos(gg(2))):EndIf If pos(gg(2))=4:MEZU(pos(gg(2))):EndIf If pos(gg(2))=5:ABRECHNUNG():EndIf Until gg(1)>0 ;} ----------------------------------------------------------- ; ============================================================ ;-[-DA_NACHSPIEL --------------------------------------------- DA_NACHSPIEL: If gg(1)=4:MELDUNTEN("Sieger ist PC-1 "):EndIf If gg(1)=5:MELDUNTEN("Sieger ist PC-2 "):EndIf If gg(1)=6:MELDUNTEN("Sieger ist PC-3 "):EndIf If gg(1)=7:MELDUNTEN("Sieger ist YOU "):EndIf If gg(1)=9:MELDUNTEN("ABBRUCH - "):EndIf taste=waitaction() MELDUNTEN("Neustart ? /") taste=0:WAITACTION() gg(1)=9 ;Spielabbruch vorbesetzen If taste= 74:gg(1)=0:EndIf If taste=106:gg(1)=0:EndIf MELDULOESCH() If gg(1)=0:Goto BA_VORSPIEL:EndIf ZE_HIGRU() Delay(1000) End ;} ; ============================================================ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure SYS_ACTION(nr,event) Select event Case #PB_Event_CloseWindow gg(1)=9 Case #PB_Event_MinimizeWindow gg(3)=1 Case #PB_Event_MaximizeWindow gg(3)=2 wy=WindowHeight(#win1) wx=WindowWidth(#win1) Case #PB_Event_RestoreWindow gg(3)=0 wy=#win1_y wx=#win1_x Case #WM_LBUTTONDOWN mausc=1 taste=990+mausz If nr=1:taste=0:EndIf Case #WM_RBUTTONDOWN mausc=2 taste=990+mausz If nr=1:taste=0:EndIf If taste=999 ; klick auf Spielfeld If gg(4)=3:gg(8)=1:EndIf ; Navy-Angriff : Dauer ein If gg(4)=5:gg(8)=1:EndIf ; Army-Angriff : Dauer ein EndIf Case #WM_KEYUP taste=EventwParam() ; If EventwParam()= 27:gg(1)= 9:EndIf ; ; If EventwParam()= 37:taste=37:EndIf ;
  • ; If EventwParam()= 38:taste=38:EndIf ; ; If EventwParam()= 39:taste=39:EndIf ; ; If EventwParam()= 40:taste=40:EndIf ; ; If EventwParam()= 65:taste=65:EndIf ; ; If EventwParam()= 74:taste=74:EndIf ; ; If EventwParam()= 78:taste=78:EndIf ; ; If EventwParam()= 83:taste=83:EndIf ; ; If EventwParam()= 89:taste=89:EndIf ; ; Debug taste EndSelect If taste=27:gg(1)=9:EndIf If nr=1:taste=0:EndIf EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure ZE_ZUGNR() Protected txt$, li,ob li=1100 ob=580 StartDrawing(ScreenOutput()) Box(li ,ob ,180,50,fa(4)) Box(li ,ob+3,177,44,fa(3)) txt$="Zug Nr. "+Str(gg(5)) DrawingFont(FontID(#font00)):DrawingMode(#PB_2DDrawing_Transparent) DrawText(li+20,ob+10,txt$,fa(4)) DrawText(li+21,ob+ 9,txt$,fa(6)) StopDrawing() FlipBuffers() EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure MELDAUTOR() StartDrawing(ScreenOutput()) FrontColor(fa(4)):Box (0,688,240,32) FrontColor(fa(2)):Box (3,691,237,26) ; -- FrontColor(fa(4)):Box (240,688,800,32) FrontColor(fa(2)):Box (243,691,800,26) ; -- FrontColor(fa(4)):Box (1040,688,240,32) FrontColor(fa(2)):Box (1043,691,234,26) DrawingFont(FontID(#font00)):DrawingMode(#PB_2DDrawing_Transparent) DrawText(15,689,#titel$,fa(4)) DrawText(14,688,#titel$,fa(6)) DrawText(1055,689,autor$,fa(4)) DrawText(1054,688,autor$,fa(6)) StopDrawing() FlipBuffers() EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure MELDUNTEN(meldu$) Protected txend,abzug StartDrawing(ScreenOutput()) FrontColor(fa(4)):Box (240,688,800, 32) FrontColor(fa(1)):Box (243,691,797, 26) DrawingFont(FontID(#font00)):DrawingMode(#PB_2DDrawing_Transparent) txend=DrawText(282,690,meldu$,fa(1)) abzug=(txend-282)/2 DrawText(640-abzug,691,meldu$,fa(4)) DrawText(640-abzug,690,meldu$,fa(6)) StopDrawing() FlipBuffers() EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure MELDULOESCH() MELDAUTOR() StartDrawing(ScreenOutput()) FrontColor(fa(4)):Box (240,688,800, 32) FrontColor(fa(2)):Box (243,691,797, 26) StopDrawing() FlipBuffers() EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure COZU(sp) Protected txt$ Protected quit,qx,whl,zak,zx,zy,erfolg,cz,event ; wenn spieler bereits ausgeschieden; ueberspringen und weiter If sp(sp,1)>10 ZE_SPIELER(sp,3) Delay(250) gg(2)+1 ProcedureReturn EndIf ; --- ;Debug "===============" ;Debug "Anfang PC_"+Str(sp) ; --- ZE_SPIELER(sp,2) ; Spieler high quit=0 ;Debug"Cozu : vor COZU_01 ,PC_"+Str(sp) COZU_01(sp) ;Debug"Cozu : nach COZU_01 ,PC_"+Str(sp) Dim ha(120) For qx=1 To 120 ha(qx)=zm(qx,1) ;gewählte aktion Next qx SortArray(ha(),#PB_Sort_Descending,1,120) whl=Mod(ha(1),1000) zak=zm(whl,2) zx=zm(whl,3) zy=zm(whl,4) If zak=11:txt$="PC-"+Str(sp)+" Navy-ANGRIFF auf "+Str(zx)+","+Str(zy):EndIf If zak=12:txt$="PC-"+Str(sp)+" Army-ANGRIFF auf "+Str(zx)+","+Str(zy):EndIf If zak=13:txt$="PC-"+Str(sp)+" Fort gebaut auf "+Str(zx)+","+Str(zy):EndIf If zak=14:txt$="PC-"+Str(sp)+" City gebaut auf "+Str(zx)+","+Str(zy):EndIf ;Debug "-------Cozu----------------" ;Debug "PC_"+Str(sp)+": "+Str(ha(1))+" , "+Str(zak)+" , "+Str(zx)+" , "+Str(zy) ;Debug "-------Cozu----------------" ; durchführung der gewählten Aktion (angriff oder bauen) erfolg=0 Select zak Case 11 ; Navy-Angriff sp(sp,3)-4 ; Besitzgold -4 MELDUNTEN(txt$) erfolg=PRF_ANGRIFF(zx,zy) If erfolg=0:MELDUNTEN(txt$+" - fehlgeschlagen !!!"):EndIf If erfolg=1 bb(zx,zy,2)=sp ; Gebiet geht in Besitz des Spielers bb(zx,zy,3)=0 ; Gebiet ist 0 Runden im besitz bb(zx,zy,6)=0 ; ein evtl. vorhandenes Fort wird zerstört bb(zx,zy,7)=0 ; eine evtl vorhandene Stadt wird zerstört ZE_BLD_1(zx,zy) MELDUNTEN(txt$+" - erfolgreich !!!") ; hier muss noch eine variable hin, das bei sieg sofort abgebrochen widr PRF_SIEG(sp) EndIf Case 12 ; Army-Angriff sp(sp,3)-1 ; Besitzgold -1 MELDUNTEN(txt$) erfolg=PRF_ANGRIFF(zx,zy) If erfolg=0:MELDUNTEN(txt$+" - fehlgeschlagen !!!"):EndIf If erfolg=1 bb(zx,zy,2)=sp ; Gebiet geht in Besitz des Spielers bb(zx,zy,3)=0 ; Gebiet ist 0 Runden im besitz bb(zx,zy,6)=0 ; ein evtl. vorhandenes Fort wird zerstört bb(zx,zy,7)=0 ; eine evtl vorhandene Stadt wird zerstört ZE_BLD_1(zx,zy) MELDUNTEN(txt$+" - erfolgreich !!!") PRF_SIEG(sp) EndIf Case 13 ; Fort bauen bb(zx,zy,6)=1 ; Fort da / 0=weg sp(sp,3)-3 ; Besitzgold -3 ZE_BLD_1(zx,zy) MELDUNTEN(txt$) Case 14 ; Stadt bauen bb(zx,zy,7)=1 ; 1=City da / 0=weg bb(zx,zy,4)+1 ; goldschöpfung+1 sp(sp,3)-2 ; Besitzgold -2 ZE_BLD_1(zx,zy) MELDUNTEN(txt$) Default quit=1 MELDUNTEN("PC-"+Str(sp)+" Aussetzen !!") EndSelect ZE_SPIELER(sp,2) ; Spieler highlighted /w Goldverbrauch durch Aktion Delay(gg(11)) MELDULOESCH() If sp(sp,3)<1:quit=1:EndIf ; nicht mehr genug gold für weiteren Zug If quit=1 ZE_SPIELER(sp,1) ; Spieler low gg(2)+1 ; Spielerwechsel ;Debug "ENDE PC_"+Str(sp) EndIf EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure COZU_01(sp) ; Bewertung der einzelnen Felder Protected qx,qy,ww1,ww2,ww3,ww4,qz,nr,cz ;Debug "cozu_01-anfang "+Str(sp) ww1=0 ; Küstenlinie vorhanden, ohne Küstenlinie kein Navyangriff ww2=0 ; feindl. Nachbar; w/ Fortbau ww3=0 ; Nachbar ist eigenes Feld; w/ Armyangriff ww4=0 ; For qx=1 To 11 For qy=1 To 7 ; ist das betrachtete Feld ein Landfeld? If bb(qx,qy,1)>10 ; alle Aktionswerte normalisieren ww1=0:ww2=0:ww3=0:ww4=0 bb(qx,qy,11)=0 bb(qx,qy,12)=0 bb(qx,qy,13)=0 bb(qx,qy,14)=0 ;bb(qx,qy,15)=0 ; --- ; hat das betrachtete Feld eine Küstenlinie ? w/Navyangriff If bb(qx ,qy-1,1)<10:ww1+1:EndIf If bb(qx+1,qy ,1)<10:ww1+1:EndIf If bb(qx ,qy+1,1)<10:ww1+1:EndIf If bb(qx-1,qy ,1)<10:ww1+1:EndIf ; --- ; hat das betrachtete Feld feindliche Nachbarn ? If bb(qx ,qy-1,2)>0 And bb(qx ,qy-1,2)<>sp:ww2+1:EndIf If bb(qx+1,qy ,2)>0 And bb(qx+1,qy ,2)<>sp:ww2+1:EndIf If bb(qx ,qy+1,2)>0 And bb(qx ,qy+1,2)<>sp:ww2+1:EndIf If bb(qx-1,qy ,2)>0 And bb(qx-1,qy ,2)<>sp:ww2+1:EndIf ; --- ; hat das betrachtete Feld; eigene Felder als Nachbarn ? If bb(qx ,qy-1,2)=sp:ww3+1:EndIf If bb(qx+1,qy ,2)=sp:ww3+1:EndIf If bb(qx ,qy+1,2)=sp:ww3+1:EndIf If bb(qx-1,qy ,2)=sp:ww3+1:EndIf ; --- ; unbesetztes Feld If bb(qx,qy,2)=0 bb(qx,qy,11)=50 ; quote für Navyangriff If ww1=0:bb(qx,qy,11)=0 :EndIf ; kein Navyangriff; keine Küste If ww3>0:bb(qx,qy,11)=0 :EndIf ; kein navyangriff; army billiger If ww3=0:bb(qx,qy,12)=0 :EndIf ; kein armyangriff; kein eigenes Nachbarfeld If ww3>0:bb(qx,qy,12)=80:EndIf ; quote für armyangriff ; unbesetzte Goldmine If bb(qx,qy,5)=1 ;unbesetzte Goldmine If bb(qx,qy,11)>0:bb(qx,qy,11)+5:EndIf ; Navyangriff If bb(qx,qy,12)>0:bb(qx,qy,12)+5:EndIf ; Armyangriff EndIf EndIf ; --- ; betrachtetes Feld ist Feindesland If bb(qx,qy,2)>0 And bb(qx,qy,2)<>sp bb(qx,qy,11)=30 ; quote für Navyangriff If ww1=0:bb(qx,qy,11)=0 :EndIf ; keine Küste;keine Navy If ww3=0:bb(qx,qy,12)=0 :EndIf ; kein eig. Nachb,keine army If ww3>0:bb(qx,qy,11)=0 :EndIf ; keine navy; army billiger If ww3>0:bb(qx,qy,12)=45:EndIf ; quote für armyangriff If bb(qx,qy,6)>0 ; Fort vorhanden If bb(qx,qy,11)>0:bb(qx,qy,11)-10:EndIf If bb(qx,qy,12)>0:bb(qx,qy,12)-10:EndIf EndIf If bb(qx,qy,7)>0 ; City vorhanden If bb(qx,qy,11)>0:bb(qx,qy,11)+5:EndIf If bb(qx,qy,12)>0:bb(qx,qy,12)+5:EndIf EndIf EndIf ; --- ; betrachtetes Feld ist eigenes Feld => Bauoptionen If bb(qx,qy,2)=sp If ww2=0:bb(qx,qy,13)=30:EndIf ; quote Fort; Feld ohne feind If ww2>0:bb(qx,qy,13)=55:EndIf ; quote Fort; mit feindl.Nachb If ww2=0:bb(qx,qy,14)=40:EndIf ; quote city; ohne feindl N If ww2>0:bb(qx,qy,14)=25:EndIf ; quote city; mit feindl. N If bb(qx,qy,6)>0:bb(qx,qy,13)=0:EndIf ; Fort da; Quote Fort 0 If bb(qx,qy,7)>0:bb(qx,qy,14)=0:EndIf ; city da; Quote city 0 If bb(qx,qy,5)>0:bb(qx,qy,14)=0:EndIf ; Mine da; Quote City 0 cz=PRF_CITYZAHL(sp) If cz>9:bb(qx,qy,14)=0:EndIf ; MaxStadt;Quote City 0 EndIf ; --- EndIf ; ein wenig Zufall untermischen; auch damit unterschiedliche Quoten ; kommen um im Array unterschiedliche Rangplätze zu erhalten For qz=11 To 14 nr=bb(qx,qy,qz) If nr>0:nr=(nr-9)+Random(18):EndIf bb(qx,qy,qz)=nr Next qz Next qy Next qx ; array Zugmöglichkeiten: 1=quote; 2=art der aktion; 3=qx, 4=qy nr=0 For qz=1 To 120 zm(qz,1)=0 zm(qz,2)=0 zm(qz,3)=0 zm(qz,4)=0 Next qz For qx=1 To 11 For qy= 1 To 7 If bb(qx,qy,1)>0 For qz= 11 To 14 If bb(qx,qy,qz)>0 nr+1 zm(nr,1)=bb(qx,qy,qz)*1000+nr ;quote*1000+Nummer der zugmöglichkeit zm(nr,2)=qz zm(nr,3)=qx zm(nr,4)=qy EndIf Next qz EndIf Next qy Next qx ;prüfen ob genug gold für aktion da For qx=1 To 120 If zm(qx,2)>0 If sp(sp,3)<4 And zm(qx,2)=11:zm(qx,1)=0:zm(qx,2)=0:EndIf If sp(sp,3)<3 And zm(qx,2)=13:zm(qx,1)=0:zm(qx,2)=0:EndIf If sp(sp,3)<2 And zm(qx,2)=14:zm(qx,1)=0:zm(qx,2)=0:EndIf If sp(sp,3)<1 And zm(qx,2)=12:zm(qx,1)=0:zm(qx,2)=0:EndIf EndIf ;Debug "CZ_01 "+Str(zm(qx,1))+","+Str(zm(qx,2))+","+Str(zm(qx,3))+","+Str(zm(qx,4))+"," Next qx ;Debug "---Ende COZU_01 ----------------------" EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure MEZU(pos) ; Eingabe-Schleife ;Protected quit,event,wy,wx,zwis Protected dran,event meldunten("Du bist dran") ZE_SPIELER(4,2) ; highlighted If sp(4,1)>10:gg(2)+1:ProcedureReturn:EndIf ; Mensch bereits tot dran=1 ; Mensch ist aktiv Repeat FlipBuffers() taste=0:mausc=0:mausz=0 mausx=Int(#win1_x/wx*WindowMouseX(#win1)) mausy=Int(#win1_y/wy*WindowMouseY(#win1)) mausz=MAUSZONE() ; mauszonen: 2 bis 5 =aktionsmenu von oben an; 8=Done; 9=Spielfeld event=WindowEvent() If event SYS_ACTION(2,event) Else Delay(5) EndIf ; taste up If taste=65 Or taste=38 ZE_AKTION(gg(4),1) ; alte Aktion auf low gg(4)-1 If gg(4)<2:gg(4)=5:EndIf gg(8)=0 ; auf jeden Fall Dauerangriff stoppen ZE_AKTION(gg(4),2) ; neue Aktion auf high EndIf ;taste down If taste=89 Or taste=40 Or taste=83 ZE_AKTION(gg(4),1) ; alte Aktion auf low gg(4)+1 If gg(4)<2:gg(4)=2:EndIf If gg(4)>5:gg(4)=2:EndIf gg(8)=0 ; auf jeden Fall Dauerangriff stoppen ZE_AKTION(gg(4),2) ; neue Aktion auf high EndIf If gg(8)=1:taste=999 :EndIf ; Dauerangriff ; mausclick auf Spielfeld If taste=999:MEZU_02():EndIf ; Mausclick auf Done If taste=998 ZE_BUTTON(1,1,1) ;Button high schalten Delay(120) ;kurze Pause ZE_BUTTON(1,1,0) ;Button wieder low If gg(4)>0 ZE_AKTION(gg(4),1) ; Aktionsmenue auf low gg(4)=0 ; Aktuelle aktion wieder auf Null gg(8)=0 ; Dauerangriff abschalten EndIf ZE_SPIELER(4,1) ; Spieler Mensch wieder auf low Delay(500) gg(2)+1 ; nächster Spieler ist dran dran=0 EndIf If taste=995 Or taste=994 Or taste=993 Or taste=992 ZE_AKTION(gg(4),1) ; alte Aktion auf low gg(4)=taste-990 ; neue Aktion bestimmen gg(8)=0 ; auf jeden Fall Dauerangriff stoppen ZE_AKTION(gg(4),2) ; neue Aktion highlighten EndIf If gg(1)=9:dran=0:EndIf Until dran=0 EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure MEZU_02() ; Wahl Aktion Select gg(4) Case 0 MELDUNTEN("keine Aktion ausgewaehlt !") Delay(1250) MELDULOESCH() ProcedureReturn Case 2 If sp(4,3)<2 meldunten("Citybau: Nicht genug Gold!!") Delay(1250) MELDULOESCH() ProcedureReturn EndIf MEZU_06() ProcedureReturn Case 3 If sp(4,3)<4 meldunten("Navy: Nicht genug Gold!!") Delay(1250) MELDULOESCH() gg(8)=0 ProcedureReturn EndIf MEZU_05() ProcedureReturn Case 4 If sp(4,3)<3 meldunten("Fort: Nicht genug Gold!!") Delay(1250) MELDULOESCH() ProcedureReturn EndIf MEZU_04() ProcedureReturn Case 5 If sp(4,3)<1 meldunten("Army: KEIN Gold!!") Delay(1250) MELDULOESCH() gg(8)=0 ProcedureReturn EndIf MEZU_03() ProcedureReturn EndSelect EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure MEZU_03() ; Army-Angriff ; aktion 1: Army Protected fehler,erfolg cux=Int((mausx-#xadd)/#klotz)+1 cuy=Int((mausy-#yadd)/#klotz)+1 ;If gg(8)=1:cux=gg(9):cuy=gg(10):EndIf If bb(cux,cuy,2)=4 MELDUNTEN("Army: Willst Du Dich selber angreifen?") Delay(1250) MELDULOESCH() If gg(8)=1:gg(8)=0:EndIf ProcedureReturn EndIf ; -- Army-Einsatz möglich ? If bb(cux ,cuy ,1)<11 meldunten("Army: Da ist doch nur Wasser - was soll das?!") Delay(1250) MELDULOESCH() If gg(8)=1:gg(8)=0:EndIf ProcedureReturn EndIf fehler=1 ; -- Nachbar eigenes Feld ? If bb(cux ,cuy-1,2)=4:fehler=0:EndIf If bb(cux ,cuy+1,2)=4:fehler=0:EndIf If bb(cux-1,cuy ,2)=4:fehler=0:EndIf If bb(cux+1,cuy ,2)=4:fehler=0:EndIf If fehler=1 Meldunten("Army: Einsatz nur von Nachbarfeld") Delay(1250) MELDULOESCH() If gg(8)=1:gg(8)=0:EndIf ProcedureReturn EndIf ; Angriff durchführen MELDUNTEN("Army: ANGRIFF !!!") Delay(500) sp(4,3)-1 ; Angriff kostet Geld ZE_SPIELER(4,2) If gg(8)=1:gg(9)=cux:gg(10)=cuy:EndIf erfolg=0:erfolg=PRF_ANGRIFF(cux,cuy) If erfolg=0 MELDUNTEN("Army: ANGRIFF - fehlgeschlagen !!!") Delay(1250) MELDULOESCH() EndIf If erfolg=1 bb(cux,cuy,2)=4 ; Gebiet geht in Besitz Mensch bb(cux,cuy,3)=0 ; Gebiet ist 0 Runden im besitz bb(cux,cuy,6)=0 ; ein evtl. vorhandenes Fort wird zerstört bb(cux,cuy,7)=0 ; eine evtl vorhandene Stadt wird zerstört ZE_BLD_1(cux,cuy) MELDUNTEN("Army: ANGRIFF - erfolgreich !!!") Delay(1250) PRF_SIEG(4) MELDULOESCH() gg(8)=0:gg(9)=0:gg(10)=0 EndIf EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure MEZU_04() ; Fort bauen ; aktion 2: Fort Protected fehler,li,ob,ff cux=Int((mausx-#xadd)/#klotz)+1 cuy=Int((mausy-#yadd)/#klotz)+1 fehler=0 If bb(cux,cuy,1)<11:fehler=1:EndIf If bb(cux,cuy,2)<>4:fehler=2:EndIf If bb(cux,cuy,6) >0:fehler=3:EndIf If fehler=1:MELDUNTEN("Fortbau: Was soll das, hier ist Wasser ??!!"):EndIf If fehler=2:MELDUNTEN("Fortbau: Du kannst nur auf eigenem Land bauen!!"):EndIf If fehler=3:MELDUNTEN("Fortbau: Hier ist doch schon ein Fort ??!!"):EndIf If fehler>0 Delay(1250) MELDULOESCH() ProcedureReturn EndIf ; Fort bauen ; eventuell upgrade schaffen über zweites Fort bauen !! ???? bb(cux,cuy,6)=1 ; Fort da / 0=weg sp(4,3)-3 ; Besitzgold -2 ZE_SPIELER(4,2) ZE_BLD_1(cux,cuy) EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure MEZU_05() ; Navy-Angriff ; aktion 3: Navy Protected fehler,erfolg cux=Int((mausx-#xadd)/#klotz)+1 cuy=Int((mausy-#yadd)/#klotz)+1 ; -- Prüfen, ob Navy-Einsatz möglich If bb(cux,cuy,2)=4 MELDUNTEN("Navy: Willst Du Dich selber angreifen?") Delay(1250) MELDULOESCH() If gg(8)=1:gg(8)=0:EndIf ProcedureReturn EndIf If bb(cux ,cuy ,1)<11 meldunten("Navy: Da ist doch nur Wasser - was soll das?!") Delay(1250) MELDULOESCH() If gg(8)=1:gg(8)=0:EndIf ProcedureReturn EndIf fehler=1 If bb(cux ,cuy-1,1)<11:fehler=0:EndIf If bb(cux ,cuy+1,1)<11:fehler=0:EndIf If bb(cux-1,cuy ,1)<11:fehler=0:EndIf If bb(cux+1,cuy ,1)<11:fehler=0:EndIf If fehler=1 meldunten("Navy: Keine Kueste zum Anlanden vorhanden !!") Delay(1250) MELDULOESCH() If gg(8)=1:gg(8)=0:EndIf ProcedureReturn EndIf ; -- Angriff durchführen MELDUNTEN("Navy: ANGRIFF !!!") Delay(500) sp(4,3)-4 ; gold -4; ZE_SPIELER(4,2) If gg(8)=1:gg(9)=cux:gg(10)=cuy:EndIf erfolg=0:erfolg=PRF_ANGRIFF(cux,cuy) If erfolg=0 MELDUNTEN("Navy: ANGRIFF - fehlgeschlagen !!!") Delay(1250) MELDULOESCH() EndIf If erfolg=1 bb(cux,cuy,2)=4 ; Gebiet geht in Besitz Mensch bb(cux,cuy,3)=0 ; Gebiet ist 0 Runden im besitz bb(cux,cuy,6)=0 ; ein evtl. vorhandenes Fort wird zerstört bb(cux,cuy,7)=0 ; eine evtl vorhandene Stadt wird zerstört ZE_BLD_1(cux,cuy) MELDUNTEN("Navy: ANGRIFF - erfolgreich !!!") Delay(1250) PRF_SIEG(4) MELDULOESCH() gg(8)=0:gg(9)=0:gg(10)=0 EndIf EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure MEZU_06() ; City bauen ; aktion 4: City Protected fehler,li,ob,ff,cz cux=Int((mausx-#xadd)/#klotz)+1 cuy=Int((mausy-#yadd)/#klotz)+1 fehler=0 If bb(cux,cuy,1)<11:fehler=1:EndIf If bb(cux,cuy,2)<>4:fehler=2:EndIf If bb(cux,cuy,7) >0:fehler=3:EndIf If bb(cux,cuy,5) >0:fehler=4:EndIf If fehler=1:MELDUNTEN("Citybau: Venedig wurde schon gebaut, hier ist Wasser!!"):EndIf If fehler=2:MELDUNTEN("Citybau: Du kannst nur auf eigenem Land bauen!!"):EndIf If fehler=3:MELDUNTEN("Citybau: Hier ist doch schon eine Stadt ??!!"):EndIf If fehler=4:MELDUNTEN("Citybau: Wegen der Goldmine geht das hier nicht!!"):EndIf If fehler>0 Delay(1250) MELDULOESCH() ProcedureReturn EndIf ; stadt bauen ; eventuell upgrade schaffen über zweite Stadt bauen !! ???? cz=PRF_CITYZAHL(4) If cz=10 MELDUNTEN("Maximalzahl von cities erreicht") Delay(1250) EndIf If cz<10 bb(cux,cuy,7)=1 ; city da /0=weg bb(cux,cuy,4)+1 ; goldschöpfung+1 sp(4,3)-2 ; Besitzgold -2 ZE_BLD_1(cux,cuy) ZE_SPIELER(4,2) EndIf EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure ABRECHNUNG() Protected qx,qy,ga1,ga2,ga3,ga4,gn1,gn2,gn3,gn4,gz1,gz2,gz3,gz4,zuf If gg(1)>0:ProcedureReturn:EndIf MELDUNTEN("Hier ist die Zug-Abrechnung: Anfang") ;Gold alt ga1=sp(1,3) ga2=sp(2,3) ga3=sp(3,3) ga4=sp(4,2) ; gold neu gn1=0 gn2=0 gn3=0 gn4=0 ; alle Goldzuwächse auf Null; um anschließend neu auszuzählen SP(1,4)=0 sp(2,4)=0 sp(3,4)=0 sp(4,4)=0 ; alle Felder einzeln auszählen For qx=1 To 11 For qy= 1 To 7 ;Berechnung der Goldzuteilung für den letten Zug If bb(qx,qy,3)>0 ;mind 1 Runde in Besitz If bb(qx,qy,2)=1:gn1+bb(qx,qy,4):EndIf If bb(qx,qy,2)=2:gn2+bb(qx,qy,4):EndIf If bb(qx,qy,2)=3:gn3+bb(qx,qy,4):EndIf If bb(qx,qy,2)=4:gn4+bb(qx,qy,4):EndIf EndIf ; Zufallsevents: Rebellion - Plague - Fort bricht ein - Goldmine If bb(qx,qy,2)>0 zuf=Random(100,1) If zuf<8 zuf=Random(4,1) ;rebellion If zuf=1 ZE_BLINK(qx,qy) ;blink MELDUNTEN("Provinz "+Str(qx)+" , "+Str(qy)+" rebelliert !!!") bb(qx,qy,2)=0 bb(qx,qy,3)=0 bb(qx,qy,4)=1 If bb(qx,qy,5)=1:bb(qx,qy,4)=4:EndIf bb(qx,qy,6)=0 bb(qx,qy,7)=0 ZE_BLD_1(qx,qy) Delay(gg(11)) EndIf ;plague If zuf=2 If bb(qx,qy,7)=1 ZE_BLINK(qx,qy) ;blink MELDUNTEN("Stadt "+Str(qx)+" , "+Str(qy)+" wurde durch eine Seuche zerstört !!!") bb(qx,qy,4)=1 bb(qx,qy,7)=0 ZE_BLD_1(qx,qy) Delay(gg(11)) EndIf EndIf ; Fort kaputt If zuf=3 If bb(qx,qy,6)=1 ZE_BLINK(qx,qy) ;blink MELDUNTEN("Das Fort auf "+Str(qx)+" , "+Str(qy)+" ist zusammengebrochen !!!") bb(qx,qy,4)=1 bb(qx,qy,6)=0 ZE_BLD_1(qx,qy) Delay(gg(11)) EndIf EndIf If zuf=4 If bb(qx,qy,7)=1 ZE_BLINK(qx,qy) ;blink MELDUNTEN("In "+Str(qx)+" , "+Str(qy)+" wurde eine Goldmine entdeckt !!!") bb(qx,qy,4)=4 bb(qx,qy,5)=1 bb(qx,qy,7)=0 ZE_BLD_1(qx,qy) Delay(gg(11)) EndIf EndIf MELDULOESCH() EndIf EndIf ;möglicher Goldbesitz in der nächsten Runde rauf If bb(qx,qy,2)>0 If bb(qx,qy,2)=1:sp(1,4)+bb(qx,qy,4):EndIf If bb(qx,qy,2)=2:sp(2,4)+bb(qx,qy,4):EndIf If bb(qx,qy,2)=3:sp(3,4)+bb(qx,qy,4):EndIf If bb(qx,qy,2)=4:sp(4,4)+bb(qx,qy,4):EndIf ; Besitzdauer 1 rauf für alle bb(qx,qy,3)+1 EndIf ; Defense neu einstellen If bb(qx,qy,2)=0 ; neutrales Land bb(qx,qy,10)= 60 ; wird schwach verteidigt If bb(qx,qy,5)>0 ; neutrale goldmine bb(qx,qy,10)=100 EndIf EndIf If bb(qx,qy,2)>0 ; besetztes Land bb(qx,qy,10)=90+Random(20) ; normale Verteidigungsstärke If bb(qx,qy,6)=1 ; Fort da bb(qx,qy,10)+20 ; stärkere Verteidigung EndIf EndIf Next qy Next qx ;max 30 goldzuwachs in einer Runde If gn1>30:gn1=30:EndIf If gn2>30:gn2=30:EndIf If gn3>30:gn3=30:EndIf If gn4>30:gn4=30:EndIf ; Goldbestand neu sp(1,3)+gn1 sp(2,3)+gn2 sp(3,3)+gn3 sp(4,3)+gn4 ;Deckelung des Goldbesitzes auf max 40 Gold If sp(1,3)>40:sp(1,3)=40:EndIf If sp(2,3)>40:sp(2,3)=40:EndIf If sp(3,3)>40:sp(3,3)=40:EndIf If sp(4,3)>40:sp(4,3)=40:EndIf ;deckelung des Goldzuwachses auf 30 If sp(1,4)>30:sp(1,4)=30:EndIf If sp(2,4)>30:sp(2,4)=30:EndIf If sp(3,4)>30:sp(3,4)=30:EndIf If sp(4,4)>30:sp(4,4)=30:EndIf ; wenn Spieler kein Land mehr hat ist er tot If sp(1,4)=0 If sp(1,1)<10:sp(1,1)+10:EndIf EndIf If sp(2,4)=0 If sp(2,1)<10:sp(2,1)+10:EndIf EndIf If sp(3,4)=0 If sp(3,1)<10:sp(3,1)+10:EndIf EndIf If sp(4,4)=0 If sp(4,1)<10:sp(4,1)+10:EndIf EndIf ZE_SPIELER(pos(1),1) ZE_SPIELER(pos(2),1) ZE_SPIELER(pos(3),1) ZE_SPIELER(pos(4),1) MELDUNTEN("Zug-Abrechnung: Ende") Delay(gg(11)) MELDULOESCH() gg(2)=1 ; Spieler Nr.1 ist dran gg(5)+1:ZE_ZUGNR() ; Zugnummer eins rauf EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure PRF_CITYZAHL(SP) Protected qx,qy,qz For qx=1 To 11 For qy=1 To 7 If bb(qx,qy,2)=sp If bb(qx,qy,7)>0 qz+1 EndIf EndIf Next qy Next qx ProcedureReturn qz EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure PRF_ANGRIFF(zx,zy) Protected erg,angriff,defense erg=0 ; Blinken auf Bildschirm um Angriff optisch darzustellen ZE_BLINK(zx,zy) angriff=72+Random(30,1) ; Zufallsvariante reinbringen defense=bb(zx,zy,10)-20+Random(30,1) ; wenn Fort da; defense 20 stärker If bb(zx,zy,6)>0:defense+20:EndIf erg=0 If (angriff-defense>0):erg=1:EndIf ; angriff erfolgreich If (angriff-defense<1) erg=0 ; angriff fehlgeschlagen bb(zx,zy,10)-20 ; nach Angriff ist defense geschwächt EndIf ProcedureReturn erg EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure ZE_BLINK(zx,zy) gg(6)=1:ZE_BLD_1(zx,zy):Delay(100):gg(6)=0 gg(7)=1:ZE_BLD_1(zx,zy):Delay(100):gg(7)=0 gg(6)=1:ZE_BLD_1(zx,zy):Delay(100):gg(6)=0 gg(7)=1:ZE_BLD_1(zx,zy):Delay(100):gg(7)=0 gg(6)=1:ZE_BLD_1(zx,zy):Delay(100):gg(6)=0 gg(7)=1:ZE_BLD_1(zx,zy):Delay(100):gg(7)=0 ;--- ZE_BLD_1(zx,zy) EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure PRF_SIEG(sp) ; sp = aufrufender spieler ; =pos(x) Protected qx,qy,zg1,zg2,zg3,zg4 zg1=0:zg2=0:zg3=0:zg4=0 ;Anzahl der Felder pro Spieler For qx=1 To 11 For qy=1 To 7 If bb(qx,qy,2)=1:zg1+1:EndIf If bb(qx,qy,2)=2:zg2+1:EndIf If bb(qx,qy,2)=3:zg3+1:EndIf If bb(qx,qy,2)=4:zg4+1:EndIf Next qy Next qx If zg4=0 If sp(4,1)<10 MELDUNTEN("GAME OVER !!!! ") WAITACTION() sp(4,1)+10 ZE_SPIELER(4,3) MELDULOESCH() EndIf EndIf If zg3=0 If sp(3,1)<10 MELDUNTEN("PC-3 hat's erwischt") Delay(1250) sp(3,1)+10 ZE_SPIELER(3,3) MELDULOESCH() EndIf EndIf If zg2=0 If sp(2,1)<10 MELDUNTEN("PC-2 wurde ausgeloescht") Delay(1250) sp(2,1)+10 ZE_SPIELER(2,3) MELDULOESCH() EndIf EndIf If zg1=0 If sp(1,1)<10 MELDUNTEN("PC-1 ist erledigt") Delay(1250) sp(1,1)+10 ZE_SPIELER(1,3) MELDULOESCH() EndIf EndIf ;zaehltot qx=0 If zg1=0:qx+1:EndIf If zg2=0:qx+1:EndIf If zg3=0:qx+1:EndIf If zg4=0:qx+1:EndIf ; wer ist Sieger; wenn drei weg sind, ist der vierte der Sieger If qx=3 If zg1>0:gg(1)=4:EndIf If zg2>0:gg(1)=5:EndIf If zg3>0:gg(1)=6:EndIf If zg4>0:gg(1)=7:EndIf EndIf EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure WAITACTION() Protected event Repeat Event = WindowEvent() If event SYS_ACTION(2,event) Else Delay(5) EndIf Until taste>0 Delay(120) ; Protected quit,event ; quit=0:event=0 ; Repeat ; taste=0 ; Event = WaitWindowEvent(5) ; ExamineKeyboard() ; If KeyboardPushed(#PB_Key_Escape):taste= 27:EndIf ; If KeyboardPushed(#PB_Key_J) :taste= 74:EndIf ; If KeyboardPushed(#PB_Key_N) :taste= 78:EndIf ; If KeyboardPushed(#PB_Key_Left) :taste= 37:EndIf ; If KeyboardPushed(#PB_Key_Right) :taste= 39:EndIf ; If taste=0 ; If KeyboardPushed(#PB_Key_All):taste=989:EndIf ; EndIf ; If event=#PB_Event_CloseWindow:taste=27:EndIf ; If taste=27:gg(1)=9:EndIf ; If taste>0:Delay(120):quit=1:EndIf ; Until quit=1 EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure INFO_0() Protected infoende,infotafel,infomax,quit infoende=0 infotafel=1 infomax=2 ; Anzahl der Infoseiten ZE_HIGRU() MELDAUTOR() Repeat INFO_1(infotafel,infomax) taste=0:WAITACTION() Select taste Case 27 quit=1 Case 37 infotafel=infotafel-1 Case 39 infotafel=infotafel+1 EndSelect If infotafel=0 : infotafel=infomax : EndIf If infotafel>infomax : infotafel=1 : EndIf Until quit=1 ZE_HIGRU() MELDAUTOR() EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure INFO_1(infotafel,infomax) Protected q,info$,dx,dy Select infotafel Case 1 Restore ZB_INFO Case 2 Restore ZC_INFO Case 3 Restore ZD_INFO Case 4 Restore ZE_INFO EndSelect StartDrawing(ScreenOutput()) Box (0,0,#win1_x,#win1_y-32,fa(8)) StopDrawing() FlipBuffers() If infomax=1 MELDUNTEN("Zum Beenden: druecken") EndIf If infomax>1 MELDUNTEN("Beenden ; Blaettern
  • ") EndIf StartDrawing(ScreenOutput()) ;StartDrawing(CanvasOutput(#gdg00)) DrawingFont(FontID(#font03)) DrawingMode(1) For q=1 To 26 Read.s info$ dx=25:dy=q*25-5 DrawText(dx,dy,info$,fa(10)) Next q StopDrawing() FlipBuffers() EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure AUTOR() Protected v1,v2,v3,na0$,na2$,na4$ V1=40:V2=65:V3=110 NA0$=Chr((V2-25)) +Chr((v3-11)) +Chr((V1+1)) +Chr((V2-33)) +Chr((V1+29)) NA2$=Chr((V2+10)) +Chr((3*v1-3))+Chr((V3-9)) +Chr((2*V1+24))+Chr((v3)) NA4$=Chr((3*V1-6))+Chr((V3-5)) +Chr((2*V1+19))+Chr((2*V2-26))+Chr((V2-v1+7)) autor$=NA0$+NA4$+NA2$ EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure SYS_FARBE() Fa( 1)= RGB(185,015,000) ; rot für meldunten Fa( 2)= RGB(090,100,010) ; olivgruen f. meldautor Fa( 3)= RGB(030,030,180) ; mittelblau als Hintergrund f. Meldtast Fa( 4)= RGB(000,000,000) ; schwarz Fa( 5)= RGB(255,255,255) ; hellweiss Fa( 6)= RGB(255,255,000) ; gelb Fa( 7)= RGB(255,000,000) ; rot Fa( 8)= RGB(080,080,080) ; grau Fa( 9)= RGB(165,005,000) ; farbe 2 für meldunten Fa(10)= RGB(180,180,200) ; . Fa(11)= RGB(175,045,045) ; Button 1 oben Fa(12)= RGB(040,010,010) ; Button 1a rot Fa(13)= RGB(140,000,140) ; Button 2 unten Fa(14)= RGB(030,000,030) ; Button 2a lila Fa(15)= RGB(110,110,020) ; Button 3 mitte Menue Fa(16)= RGB(040,040,005) ; Button 3a grün Fa(17)= RGB(090,090,200) ; Button 4 mitte Untermenues Fa(18)= RGB(010,010,100) ; Button 4a blau Fa(19)= RGB(255,000,255) ; pink für Transparenz Fa(20)= RGB(020,200,020) ; grün rahmen ; ab hier frei programmierbare Farben für spezifisches Prog Fa(21)= RGB(010,080,130) ; mittelblau für Meer Fa(22)= RGB(140,110,020) ; Menu-Aktion hell Fa(23)= RGB(090,060,020) ; Menu-Aktion dunkel Fa(24)= RGB(200,175,250) ; neutrale INsel; 127,127,127 Fa(25)= RGB(200,130,130) ; Spieler 1; 150,090,090 Fa(26)= RGB(030,150,190) ; Spieler 2; 040,120,120 Fa(27)= RGB(180,060,180) ; Spieler 3; 160,080,160 Fa(28)= RGB(160,160,060) ; Spieler 4 Mensch, 080,120,030 Fa(29)= RGB(030,030,030) ; dunkelgrau Fa(30)= RGB(250,250,250) ; hellweiss Fa(31)= RGB(100,250,100) ; knatschgruen Fa(32)= RGB(250,040,040) ; frei Fa(33)= RGB(250,040,040) ; frei Fa(34)= RGB(140,010,010) ; frei Fa(35)= RGB(180,180,180) ; hellgrau; Menu Fa(36)= RGB(140,140,140) ; mittelgrau Menu Fa(37)= RGB(160,180,200) ; hellgrau mit blau; Untermneues Fa(38)= RGB(120,140,160) ; mittelgrau mit blau; Untermenues EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure SYS_BILDER() ; jetzt soll das Hintergrundbild geladen werden ; --- ; hier wird das Bild aus der EXE ausgelesen, in die es integriert ist CatchImage(#bld00,?zz_BILD01) ; Hintergrund ; --- CatchImage(#bld01,?zz_BILD02) ; Wasserbild ; --- CatchImage(#bld02,?zz_BILD04) ;Landbild gesamt ; --- Einzelbilder der Blöcke GrabImage(#bld01,#bld11, 3, 3, 95, 95) ;F GrabImage(#bld01,#bld12,103, 3, 95, 95) ;F GrabImage(#bld01,#bld13,203, 3, 95, 95) ;F GrabImage(#bld01,#bld14, 3,103, 95, 95) ;F GrabImage(#bld01,#bld15,103,103, 95, 95) ;F GrabImage(#bld01,#bld16,203,103, 95, 95) ;F GrabImage(#bld01,#bld17, 3,203, 95, 95) ;F GrabImage(#bld01,#bld18,103,203, 95, 95) ;F GrabImage(#bld01,#bld19,203,203, 95, 95) ;F GrabImage(#bld01,#bld20, 3,303, 95, 95) ;F GrabImage(#bld01,#bld21,103,303, 95, 95) ;F GrabImage(#bld01,#bld22,203,303, 95, 95) ;F ; ---------------------------------------- ;jetzt werden die Button-Bilder erzeugt mit Farbverlauf ; ---------------------------------------- ;lila hell oben CreateImage(#but03,180,50) StartDrawing(ImageOutput(#but03)) ;Farbbox hell oben; dunkel unten Box(0,0,180,50,fa(4)) DrawingMode(#PB_2DDrawing_Gradient) FrontColor(fa(14)):BackColor (fa(13)) LinearGradient(25,0,25,50) Box(0,3,177,47) DrawingFont(FontID(#font02)) DrawingMode(#PB_2DDrawing_Transparent) DrawText(40,8,"Done",fa(6)) StopDrawing() FlipBuffers() ;lila hell unten CreateImage(#but04,180,50) StartDrawing(ImageOutput(#but04)) ;Farbbox hell oben; dunkel unten Box(0,0,180,50,fa(4)) DrawingMode(#PB_2DDrawing_Gradient) FrontColor(fa(13)):BackColor (fa(14)) LinearGradient(25,0,25,50) Box(0,3,177,47) DrawingFont(FontID(#font02)) DrawingMode(#PB_2DDrawing_Transparent) DrawText(40,8,"Done",fa(6)) StopDrawing() FlipBuffers() ; ------------------------------------------------------------ ; Sprite für Mauscursor erzeugen ; ------------------------------------------------------------ ; CreateSprite(99,6,6) ; StartDrawing(SpriteOutput(99)) ; Box(0,0,5,5,fa(6)) ; StopDrawing() ; ------------------------------------------------------------ EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure ZE_HIGRU() StartDrawing(ScreenOutput()) ; DrawingMode(#PB_2DDrawing_Default) DrawImage(ImageID(#bld00),0,0) StopDrawing() FlipBuffers() EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure ZE_ROHBILD() ; anzeige des kompletten spielbildes am Anfang ClearScreen(RGB(0,0,0)) ZE_HIGRU() MELDAUTOR() StartDrawing(ScreenOutput()) ;zuerst das Spielfeld Box( 0, 0,1100,688,fa( 4)) DrawImage(ImageID(#bld02),3,3) ; Box( 3, 3,1094,685,fa(21)) ; --- ; Spielerbox Box(1100, 0,180,203,fa( 4)) ; --- ; Aktionenbox Box(1100,370,180,203,fa( 4)) StopDrawing() FlipBuffers() ;Done-Button zeichnen (Button(Nr,tx,flp)) ZE_Button( 1,1,0) ; MENU-BEFEHLE ohne highlight ; ZE_AKTION(1,1) ;Uni weg ZE_AKTION(2,1) ZE_AKTION(3,1) ZE_AKTION(4,1) ZE_AKTION(5,1) EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure ZE_AKTION(nr,art) Protected ta$,ob,li,ff,fb If nr=0:ProcedureReturn:EndIf Select nr ; Case 1 ; ta$="weg ":ob=320 Case 2 ta$="City 2":ob=370 Case 3 ta$="Navy 4":ob=420 Case 4 ta$="Fort 3":ob=470 Case 5 ta$="Army 1":ob=520 EndSelect If art=1:ff=23:fb=22:EndIf If art=2:ff=22:fb= 6:EndIf li=1100 StartDrawing(ScreenOutput()) Box(li,ob+3,177,47,fa(ff)) DrawingFont(FontID(#font00)) DrawingMode(#PB_2DDrawing_Transparent) DrawText(li+45,ob+12,ta$,fa(fb)) StopDrawing() FlipBuffers() EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure ZE_SPIELER(spl,art) Protected ta$,tb$ Protected pos,ob,li,ff,ft,fg,fz pos=sp(spl,1) ;position im Menu ; Spieler ist bereits tot If pos>10 pos=pos-10 art=3 EndIf ff =sp(spl,2) ;Farbe des Spielers fg =sp(spl,3) ;derzeitiges Gold fz =sp(spl,4) ;zukünftiges Gold ; Debug "ZE_SP: spl "+Str(spl)+", pos: "+Str(pos)+", "+Str(sp(spl,1)) If spl=1:ta$="PC-1 (":EndIf If spl=2:ta$="PC-2 (":EndIf If spl=3:ta$="PC-3 (":EndIf If spl=4:ta$="YOU (":EndIf ;art: 1=nicht dran; 2=dran (highlighted); 3=tot (Name gelöscht) If art=1:ft= 8:EndIf If art=2:ft= 6:EndIf If art=3:ft=ff:EndIf ob=(pos*50)-50:li=1100 tb$=ta$+Str(fg)+"/"+Str(fz)+")" StartDrawing(ScreenOutput()) Box( li,ob+3,177,47,fa(ff)) DrawingFont(FontID(#font00)) DrawingMode(#PB_2DDrawing_Transparent) DrawText(li+8,ob+12,tb$,fa(ft)) StopDrawing() FlipBuffers() EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure ZE_BUTTON(nr,tx,flp) Protected li,ob,ta$,tb$,bld li=1100:ob=638 ;ta$="Done" If flp=0:bld=#but03:EndIf If flp=1:bld=#but04:EndIf ; Buttons zeichnen StartDrawing(ScreenOutput()) DrawImage(ImageID(bld),li,ob) ; DrawingFont(FontID(#font02)) ; DrawingMode(#PB_2DDrawing_Transparent) ; DrawText(1170,ob+8,ta$,fa(6)) ; DrawText(710,ob+30,tb$,fa(6)) StopDrawing() FlipBuffers() EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure MAUSZONE() Protected mf mf=0 ; Spielfeld If mausx<1100:mf=9:EndIf ; Aktionsmenue If mausx>1100 ; If mausy>320 And mausy<370:mf=1:EndIf If mausy>370 And mausy<420:mf=2:EndIf If mausy>420 And mausy<470:mf=3:EndIf If mausy>470 And mausy<520:mf=4:EndIf If mausy>520 And mausy<570:mf=5:EndIf ; Done If mausy>638 And mausy<688:mf=8:EndIf EndIf ProcedureReturn mf EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure BILDBAU() Protected anzland,qx,qy,bld,li,ob,zuf,qz,ff,neu ;Festlegung der Anzahl der Landfelder anzland=Random(48,22) ;Bildarray normalisieren For qx=0 To 12 For qy=0 To 8 For qz=0 To 10 bb(qx,qy,qz)=0 Next qz Next qy Next qx ; Landfelder einstreuen qz=1 Repeat qx=Random(11,1) qy=Random(7,1) bld=Random(22,11) If bb(qx,qy,1)=0 bb(qx,qy,1)=bld ; bldnr bb(qx,qy,2)=0 ; derzeitiger Besitzer bb(qx,qy,3)=0 ; Dauer Runden im Besitz bb(qx,qy,4)=1 ; Produktion Goldmünzen/Runde bb(qx,qy,5)=0 ; art der Bebauung bb(qx,qy,6)=0 ; art der Bebauung bb(qx,qy,7)=0 ; art der Bebauung bb(qx,qy,8)=0 ; art der Bebauung bb(qx,qy,10)=60 ; Defense qz+1 EndIf Until qz>anzland ; Bild neu zeichnen For qx=1 To 11 For qy=1 To 7 bld=bb(qx,qy,1) If bld>0:ZE_BLD_0(qx,qy):EndIf Next qy Next qx ; Spieler zufällig setzen qz=1 Repeat qx=Random(11,1) qy=Random(7,1) If bb(qx,qy,2)=0 ; ist das Gebiet noch nicht besetzt? If bb(qx,qy,1)>10 ; ist das Gebiet Festland ? bb(qx,qy,2)=sp(qz,1) ; Besitz übernehmen bb(qx,qy,3)=1 ; im Besitz von spieler sp(qz) => nächste Runde 1 Gold bb(qx,qy,10)=100 ; Defense ZE_BLD_1(qx,qy) SP(qz,5)=1 ; Spieler besitzt jetzt genau 1 gebiet qz+1 EndIf EndIf Until qz=5 ; Goldminen zufällig setzen For qz=1 To 5 qx=Random(11,1) qy=Random(7,1) If bb(qx,qy,1)>11 If bb(qx,qy,2)=0 If Random(100,1)<40 bb(qx,qy,5)=1 ; Wert5 = Goldmine; da=1 nicht da=0 bb(qx,qy,4)=4 bb(qx,qy,10)=100 ; Defense ZE_BLD_1(qx,qy) EndIf EndIf EndIf Next qz EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure ZE_BLD_0(zx,zy) Protected li,ob,bld StartDrawing(ScreenOutput()) li=#xadd+(zx-1)*#klotz ob=#yadd+(zy-1)*#klotz bld=bb(zx,zy,1) DrawAlphaImage(ImageID(bld),li,ob) StopDrawing() FlipBuffers() EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedure ZE_BLD_1(zx,zy) Protected zz,ff,li,ob,f1,f2,f1c,f2c Protected f1$,f2$ f1c=0:f2c=0 f1=0:f2=0 zz=bb(zx,zy,2) ; wer ist Eigentümer ; --- If zz=0 ; neutrales Gebiet ff=24 ; neutrale Farbe ZE_BLD_0(zx,zy) ; Bild neu drüber zeichnen If bb(zx,zy,5)>0 f1=1 f1$="G" f1c=6 EndIf EndIf ; --- If zz>0 ; besetztes Gebiet ff=sp(zz,2) ; Farbe des Spielers ZE_BLD_0(zx,zy) ; Bild neu drüber zeichnen f1=1:f2=1 ; alle vier Kästchen an If bb(zx,zy,5)>0 ; Goldmine f1$="G":f1c=6 EndIf If bb(zx,zy,6)>0 ; Fort f2$="F":f2c=5 EndIf If bb(zx,zy,7)>0 ; City f1$="C":f1c=5 EndIf EndIf If gg(6)>0:ff=7:f1=1:f2=1:EndIf If gg(7)>0:ff=8:f1=1:f2=1:EndIf ; --- StartDrawing(ScreenOutput()) li=#xadd+20+(zx-1)*#klotz ob=#yadd+30+(zy-1)*#klotz If f1=1:Box(li ,ob ,25,35,fa(ff)):EndIf If f2=1:Box(li+30,ob ,25,35,fa(ff)):EndIf DrawingFont(FontID(#font02)):DrawingMode(1) If f1c>0 DrawText(li+1,ob,f1$,fa(4)) DrawText(li+2,ob,f1$,fa(f1c)) EndIf If f2c>0 DrawText(li+31,ob,f2$,fa(4)) DrawText(li+32,ob,f2$,fa(f2c)) EndIf StopDrawing() FlipBuffers() EndProcedure ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ============================================================ ; ------Datasections------------------------------------------ ;-[-ZA_BILDER ------------------------------------------------ ; das Hintergrundbild wird in die exe integriert DataSection zz_BILD01: IncludeBinary #HBLD0$ ;Hintergrund zz_BILD02: IncludeBinary #HBLD1$ ;Wasser zz_BILD03: IncludeBinary #ICON$ ;icon zz_BILD04: IncludeBinary #HBLD2$ ;Landbilder EndDataSection ;}------------------------------------------------------------- ;-[-ZB_INFO -------------------------------------------------- DataSection ZB_INFO: Data.s "Hinweise:" Data.s "." Data.s "EK-Crown ist mein Nachbau des Freeware-Spiels Crown & Council, welches seinerseits eine Abwandlung" Data.s "des Brettspiels 'Risiko' aus dem Jahr 1957 ist." Data.s "." Data.s "Ziel des Spieles ist es, alle Gegner zu eliminieren und alle Spielfelder (Länder) im Besitz zu haben." Data.s "." Data.s "Zur Eroberung kann man einen Army-Angriff starten, der ein Goldstück kostet. Das geht aber nur von " Data.s "einem eigenen unmittelbaren Nachbarfeld aus. Nachbarfelder sind nur die unmittelbaren" Data.s "Nachbarn oben, unten, rechts und links, nicht!! die diagonal angrenzenden Felder." Data.s "." Data.s "Weiter entfernte Felder kann man, sofern sie eine Küstenlinie haben, jederzeit " Data.s "angreifen mit einem Navy-Angriff, der allerdings 4 Gold kostet." Data.s "." Data.s "Kriege sind teuer, daher muss man Goldstücke erwirtschaften. Jedes eigene Landfeld " Data.s "bringt 1 Goldstück pro Runde im Eigenbesitz. Die Runde der Eroberung des Feldes zählt dabei noch nicht." Data.s "." Data.s "Besonders wertvoll sind die Felder, die mit einem 'G' gekennzeichnet sind. Das sind Goldminen. " Data.s "Diese Felder bringen 4 Goldstücke pro Runde. Um die Goldproduktion zu beschleunigen," Data.s "können auf eigenen Feldern Städte (Cities) gebaut werden; diese Felder erwirtschaften " Data.s "ein zweites Goldstück pro Runde. Es können pro Spieler max. 10 Städte gebaut werden." Data.s "Es können pro Runde max 30 Goldtücke erwirtschaftet werden. Alles darüber bleibt unberücksichtigt." Data.s "Der maximale Kassenbestand beträgt 40 Goldstücke. Alles darüber bleibt unberücksichtigt." Data.s "." Data.s "Zur Verteidigung der eigenen Ländereien können Forts gebaut werden, die 3 Goldstücke kosten. " Data.s "Sie erhöhen die Verteidigungskraft des Landes gegen einen Angriff" EndDataSection ;} ----------------------------------------------------------- ;-[-ZC_INFO -------------------------------------------------- DataSection ZC_INFO: Data.s "Die Bedienung des Spiels erfolgt mit der Maus. " Data.s "Zuerst wird eine Aktion ausgewählt mit Linksclick. Der entsprechende Menupunkt wird highlighted." Data.s "Anschließend klickt man mit der linken Maustaste auf ein Spielfeld (Land) und die gewünschte Aktion " Data.s "wird durchgeführt, wenn sie zulässig ist. Der Erfolg wird optisch im Spielfeld und unten in " Data.s "der Meldeziele angezeigt. Bei einer Angriffsaktion kann man auch einen Rechtsclick auf" Data.s "das Zielfeld setzen, dann wird das Feld solange angegriffen, bis es erobert ist oder das Gold" Data.s "ausgeht oder die Maus vom Zielfeld entfernt wird." Data.s "." Data.s "Mit einem Klick auf den Button 'Done' wird der eigene Zug beendet und der nächste Spieler ist dran." Data.s "Die Reihenfolge der Spieler wird bei jedem Spielstart neu ausgelost." Data.s "Das Aktionsmenu kann auch mit der Tastatur gesteuert werden." Data.s "Die Tasten und sowie und sind dafür vorgesehen." Data.s "Mit oder dem Klick auf den wird das Spiel beendet" Data.s "." Data.s "." Data.s "." Data.s "." Data.s "." Data.s "." Data.s "." Data.s "Das Spiel ist Freeware. Alle Rechte liegen beim Autor" Data.s "Jegliche gewerbliche Nutzung, insbesondere das Einstellen in" Data.s "Download-Portale oder die Veröffentlichung auf Datenträgern" Data.s "bedarf meines schriftlichen Einverständnisses" Data.s "Mönchengladbach, im Dezember 2016" Data.s "." EndDataSection ;} ----------------------------------------------------------- ;-[-ZD_INFO -------------------------------------------------- DataSection ZD_INFO: Data.s ".z01" Data.s ".z02" Data.s ".z03" Data.s ".z04" Data.s ".z05" Data.s ".z06" Data.s ".z07" Data.s ".z08" Data.s ".z09" Data.s ".z10" Data.s ".z11" Data.s ".z12" Data.s ".z13" Data.s ".z14" Data.s ".z15" Data.s ".z16" Data.s ".z17" Data.s ".z18" Data.s ".z19" Data.s ".z20" Data.s ".z21" Data.s ".z22" Data.s ".z23" Data.s ".z24" Data.s ".z25" Data.s ".z26" EndDataSection ;} ------------------------------------------------------------ ;-[-ZE_INFO -------------------------------------------------- DataSection ZE_INFO: EndDataSection ;} ------------------------------------------------------------ ; ============================================================ End