def Generator(Blockgroesse, Hoehe, Breite, HoeheBlock, BreiteBlock): # Da der unterste Block sonst im Nicht Darstellbaren Bereich gehen würde x=0, y=1 ist der AusgangsPunkt unten Rechts # Anzahl der Blöcke wie Hoch der Generator geht (7 Hoch) HoeheBlock = int(HoeheBlock / 2 - 2) # Namen der Objekte ObjektNamen = Blockanzahl(HoeheBlock, BreiteBlock, (HoeheBlock * BreiteBlock)) # Liste aller Objekte die Später Zurück gegeben wird AlleObjekte = [] Blocknummer = 0 BreiteGanzRechts = BreiteBlock - 1 HoeheGanzOben = HoeheBlock - 1 for y in range(HoeheBlock): for x in range(BreiteBlock): if y != HoeheGanzOben: Zufall = randint(0, 50) if Zufall < 2: ObjektNamen[int(Blocknummer)] = K.Diamant( x * 32, Hoehe - Blockgroesse * y) elif Zufall < 10 and not Zufall < 2: ObjektNamen[int(Blocknummer)] = K.Eisen( x * 32, Hoehe - Blockgroesse * y) elif Zufall < 15 and not Zufall < 10: ObjektNamen[int(Blocknummer)] = K.Erde( x * 32, Hoehe - Blockgroesse * y) ObjektNamen[int(Blocknummer)].Checkgras(y, HoeheGanzOben) elif Zufall < 18 and not Zufall < 15: ObjektNamen[int(Blocknummer)] = K.Gold( x * 32, Hoehe - Blockgroesse * y) else: ObjektNamen[int(Blocknummer)] = K.ReinerStein( x * 32, Hoehe - Blockgroesse * y) else: ObjektNamen[int(Blocknummer)] = K.Erde( x * 32, Hoehe - Blockgroesse * y) ObjektNamen[int(Blocknummer)].Checkgras(y, HoeheGanzOben) AlleObjekte.append(ObjektNamen[int(Blocknummer)]) Blocknummer += 1 Baum = BaumGenerator(Blockgroesse, HoeheBlock, BreiteBlock, Hoehe, Breite) for k in Baum: AlleObjekte.append(k) Berg = Berge(Blockgroesse, Hoehe, Breite, HoeheBlock, BreiteBlock, Baum) for i in Berg: AlleObjekte.append(i) return AlleObjekte
def Berg_Bloecke(X, Y, Bildschirm_Breite, Untere_Breite, Anzahl): Zufall = randint(0, 100) # Wenn der Block über X hinweg geht # If Abfrage, das wenn es Größer als Breite ist (Fensterbreite) oder kleiner als 0, dann an der anderen Seite Weiter machen if X >= Bildschirm_Breite: X -= Bildschirm_Breite if Untere_Breite == Anzahl or Anzahl == 1: Finaler_Block = K.Erde(X, Y) elif Zufall <= 2: Finaler_Block = K.Diamant(X, Y) elif Zufall <= 5: Finaler_Block = K.Gold(X, Y) elif Zufall <= 15: Finaler_Block = K.Eisen(X, Y) elif Zufall <= 20: Finaler_Block = K.Erde(X, Y) Finaler_Block.Blockart = "Erde" else: Finaler_Block = K.ReinerStein(X, Y) return Finaler_Block
def Esape_menu(Fenster, maus_x, maus_y, Verstecktes_fenster, schrift_rot, schrift_weiß, Links_klick, Regen_an, Regen_Geschwindigkeit, Musik_an, FensterBreite, FensterHoehe, Blockgroesse, Auswahl): schrift_rot_kopie = schrift_rot schrift_weiß_kopie = schrift_weiß Formen_lokal = [] dict_lokal = [] Grafiken = BilderLaden(Blockgroesse) Gras = Grafiken[1] Eisen = Grafiken[2] Gold = Grafiken[3] Diamant = Grafiken[4] Spielsequenz = 2 Mauszeiger = pygame.draw.rect(Verstecktes_fenster, (0, 0, 0), (maus_x, maus_y, 10, 10)) Font = pygame.font.SysFont('Arial', 32) # Escape Fenster Escape_Fenster = pygame.draw.rect(Fenster, schrift_weiß, (20, 20, 160, 40)) Escape_Schrift = Font.render("ZURÜCK", True, (schrift_rot)) if Mauszeiger.colliderect(Escape_Fenster): Escape_Fenster = pygame.draw.rect(Fenster, schrift_rot, (20, 20, 160, 40)) Escape_Schrift = Font.render("ZURÜCK", True, (schrift_weiß)) Fenster.blit(Escape_Schrift, (30, 23)) # Übergabe des Klickens if Mauszeiger.colliderect(Escape_Fenster) and Links_klick == True: Spielsequenz = 1 # Regen Ausschalten Regen_aus = pygame.draw.rect(Fenster, schrift_weiß, (200, 200, 220, 40)) Regen_aus_Schrift = Font.render("Regen ist an", True, (schrift_rot)) if Regen_an == False: Regen_aus = pygame.draw.rect(Fenster, schrift_rot, (200, 200, 220, 40)) Regen_aus_Schrift = Font.render("Regen ist aus", True, (schrift_weiß)) Fenster.blit(Regen_aus_Schrift, (210, 200)) if Mauszeiger.colliderect(Regen_aus) and Links_klick == True: if Regen_an == True: Regen_an = False else: Regen_an = True # Musik Ausschalten Musik_aus = pygame.draw.rect(Fenster, schrift_weiß, (600, 200, 220, 40)) Musik_aus_Schrift = Font.render("Musik ist an", True, (schrift_rot)) if Musik_an == False: Musik_aus = pygame.draw.rect(Fenster, schrift_rot, (600, 200, 220, 40)) Musik_aus_Schrift = Font.render("Musik ist aus", True, (schrift_weiß)) Fenster.blit(Musik_aus_Schrift, (620, 200)) if Mauszeiger.colliderect(Musik_aus) and Links_klick == True: if Musik_an == True: Musik_an = False else: Musik_an = True # Exit Exit = pygame.draw.rect(Fenster, schrift_weiß, (450, 400, 100, 40)) Exit_Schrift = Font.render("EXIT", True, (schrift_rot)) if Mauszeiger.colliderect(Exit): Exit = pygame.draw.rect(Fenster, schrift_rot, (450, 400, 100, 40)) Exit_Schrift = Font.render("EXIT", True, schrift_weiß) Fenster.blit(Exit_Schrift, (465, 400)) if Mauszeiger.colliderect(Exit) and Links_klick == True: sys.exit() # Blöcke an der Seite for i in range(1, 5): r1_y = FensterHoehe if i == 1: r1_x = 0 r2_x = Blockgroesse r3_x = r2_x + Blockgroesse r4_x = r2_x + Blockgroesse * 2 if i == 2: r1_x = FensterBreite - Blockgroesse r2_x = FensterBreite - Blockgroesse * 2 r3_x = FensterBreite - Blockgroesse * 3 r4_x = FensterBreite - Blockgroesse * 4 if i == 4: r1_y = 0 r1_x = FensterBreite - Blockgroesse r2_x = FensterBreite - Blockgroesse * 2 r3_x = FensterBreite - Blockgroesse * 3 r4_x = FensterBreite - Blockgroesse * 4 if i in [1, 2]: dict_lokal.append(k.Diamant(r1_x, r1_y - Blockgroesse)) dict_lokal.append(k.Gold(r1_x, r1_y - Blockgroesse * 2)) dict_lokal.append(k.Eisen(r1_x, r1_y - Blockgroesse * 3)) dict_lokal.append(k.Erde(r1_x, r1_y - Blockgroesse * 4)) dict_lokal.append(k.Eisen(r2_x, r1_y - Blockgroesse)) dict_lokal.append(k.Diamant(r2_x, r1_y - Blockgroesse * 2)) dict_lokal.append(k.Erde(r2_x, r1_y - Blockgroesse * 3)) dict_lokal.append(k.Gold(r3_x, r1_y - Blockgroesse)) dict_lokal.append(k.Erde(r3_x, r1_y - Blockgroesse * 2)) dict_lokal.append(k.Erde(r4_x, r1_y - Blockgroesse)) elif i == 4: dict_lokal.append(k.Diamant(r1_x, r1_y)) dict_lokal.append(k.Gold(r1_x, r1_y + Blockgroesse * 1)) dict_lokal.append(k.Eisen(r1_x, r1_y + Blockgroesse * 2)) dict_lokal.append(k.Erde(r1_x, r1_y + Blockgroesse * 3)) dict_lokal.append(k.Eisen(r2_x, r1_y)) dict_lokal.append(k.Diamant(r2_x, r1_y + Blockgroesse * 1)) dict_lokal.append(k.Erde(r2_x, r1_y + Blockgroesse * 2)) dict_lokal.append(k.Gold(r3_x, r1_y)) dict_lokal.append(k.Erde(r3_x, r1_y + Blockgroesse * 1)) dict_lokal.append(k.Erde(r4_x, r1_y)) # Ausschmückungen an den Rändern in Bilder umformen for i in dict_lokal: # Blöcke pro Durchgang hinzufügen Formen_lokal.append(i) # Grafik der Blockart an den Punkt hinzufügen if i.Blockart == 'Gras': Fenster.blit(Gras, (i.xPosition, i.yPosition)) elif i.Blockart == 'Eisen': Fenster.blit(Eisen, (i.xPosition, i.yPosition)) elif i.Blockart == 'Gold': Fenster.blit(Gold, (i.xPosition, i.yPosition)) elif i.Blockart == 'Diamant': Fenster.blit(Diamant, (i.xPosition, i.yPosition)) return Spielsequenz, Regen_an, Regen_Geschwindigkeit, Musik_an, Auswahl
def Startsequenz(Fenster, button_farbe_normal, schrift_farbe_normal, start_button_breite, start_button_hoehe, FensterBreite, FensterHoehe, Versteckter_monitor, maus_x, maus_y, Links_klick, Blockgroesse): # Wichtige Variablen und Einstellungen einstellen Formen_lokal = [] dict_lokal = [] Grafiken = BilderLaden(Blockgroesse) Gras = Grafiken[1] Eisen = Grafiken[2] Gold = Grafiken[3] Diamant = Grafiken[4] font_Start = pygame.font.SysFont('Arial', 40) font_unreality = pygame.font.SysFont('Arial', 120) Phantom_fenster = pygame.draw.rect( Versteckter_monitor, (button_farbe_normal), (FensterBreite / 2 - int(start_button_breite / 2), FensterHoehe / 2 + start_button_hoehe, start_button_breite, start_button_hoehe)) Mauszeiger = pygame.draw.rect(Versteckter_monitor, (0, 0, 0), (maus_x, maus_y, 10, 10)) # Invertierte Farbe Font_farbe_kopie = schrift_farbe_normal button_farbe_kopie = button_farbe_normal if Mauszeiger.colliderect(Phantom_fenster): schrift_farbe_normal = button_farbe_normal button_farbe_normal = Font_farbe_kopie else: schrift_farbe_normal = Font_farbe_kopie button_farbe_normal = button_farbe_kopie # Darstellen der Gegenstände Start_rect = pygame.draw.rect( Fenster, (button_farbe_normal), (FensterBreite / 2 - int(start_button_breite / 2), FensterHoehe / 2 + start_button_hoehe, start_button_breite, start_button_hoehe)) start_schrift = font_Start.render("START", True, (schrift_farbe_normal)) Unreality_schrift = font_unreality.render("UNREALITY", True, (button_farbe_kopie)) Fenster.blit(start_schrift, (FensterBreite / 2 - int(start_button_breite / 2) + 35, FensterHoehe / 2 + start_button_hoehe)) Fenster.blit(Unreality_schrift, (200, 180)) # Ausschmückungen an den Rändern erstellen # UntenLinks for i in range(1, 5): r1_y = FensterHoehe if i == 1: r1_x = 0 r2_x = Blockgroesse r3_x = r2_x + Blockgroesse r4_x = r2_x + Blockgroesse * 2 if i == 2: r1_x = FensterBreite - Blockgroesse r2_x = FensterBreite - Blockgroesse * 2 r3_x = FensterBreite - Blockgroesse * 3 r4_x = FensterBreite - Blockgroesse * 4 if i == 3: r1_y = 0 r1_x = 0 r2_x = Blockgroesse r3_x = r2_x + Blockgroesse r4_x = r2_x + Blockgroesse * 2 if i == 4: r1_y = 0 r1_x = FensterBreite - Blockgroesse r2_x = FensterBreite - Blockgroesse * 2 r3_x = FensterBreite - Blockgroesse * 3 r4_x = FensterBreite - Blockgroesse * 4 if i in [1, 2]: dict_lokal.append(k.Diamant(r1_x, r1_y - Blockgroesse)) dict_lokal.append(k.Gold(r1_x, r1_y - Blockgroesse * 2)) dict_lokal.append(k.Eisen(r1_x, r1_y - Blockgroesse * 3)) dict_lokal.append(k.Erde(r1_x, r1_y - Blockgroesse * 4)) dict_lokal.append(k.Eisen(r2_x, r1_y - Blockgroesse)) dict_lokal.append(k.Diamant(r2_x, r1_y - Blockgroesse * 2)) dict_lokal.append(k.Erde(r2_x, r1_y - Blockgroesse * 3)) dict_lokal.append(k.Gold(r3_x, r1_y - Blockgroesse)) dict_lokal.append(k.Erde(r3_x, r1_y - Blockgroesse * 2)) dict_lokal.append(k.Erde(r4_x, r1_y - Blockgroesse)) elif i in [3, 4]: dict_lokal.append(k.Diamant(r1_x, r1_y)) dict_lokal.append(k.Gold(r1_x, r1_y + Blockgroesse * 1)) dict_lokal.append(k.Eisen(r1_x, r1_y + Blockgroesse * 2)) dict_lokal.append(k.Erde(r1_x, r1_y + Blockgroesse * 3)) dict_lokal.append(k.Eisen(r2_x, r1_y)) dict_lokal.append(k.Diamant(r2_x, r1_y + Blockgroesse * 1)) dict_lokal.append(k.Erde(r2_x, r1_y + Blockgroesse * 2)) dict_lokal.append(k.Gold(r3_x, r1_y)) dict_lokal.append(k.Erde(r3_x, r1_y + Blockgroesse * 1)) dict_lokal.append(k.Erde(r4_x, r1_y)) # Ausschmückungen an den Rändern in Bilder umformen for i in dict_lokal: # Blöcke pro Durchgang hinzufügen Formen_lokal.append(i) # Grafik der Blockart an den Punkt hinzufügen if i.Blockart == 'Gras': Fenster.blit(Gras, (i.xPosition, i.yPosition)) elif i.Blockart == 'Eisen': Fenster.blit(Eisen, (i.xPosition, i.yPosition)) elif i.Blockart == 'Gold': Fenster.blit(Gold, (i.xPosition, i.yPosition)) elif i.Blockart == 'Diamant': Fenster.blit(Diamant, (i.xPosition, i.yPosition)) # Abbruchkriterium um Ins Hauptspiel zu kommen if Mauszeiger.colliderect(Phantom_fenster) and Links_klick == True: return 1 else: return 0
) == False and Nicht_in_Luft == True: Gegenstand = Inventar[Inv_Pointer - 1] Gegenstand_Art = Gegenstand.Gegenstandsart if Gegenstand.Anzahl > 1: Inventar[Inv_Pointer - 1].Anzahl -= 1 else: Inventar.pop(Inv_Pointer - 1) if Gegenstand_Art == "ReinerStein": Neuer_Block = klassen.ReinerStein(MausX, MausY) elif Gegenstand_Art == "Erde": Neuer_Block = klassen.Erde(MausX, MausY) Neuer_Block.Blockart = "Erde" elif Gegenstand_Art == "Eisen": Neuer_Block = klassen.Eisen(MausX, MausY) elif Gegenstand_Art == "Gold": Neuer_Block = klassen.Gold(MausX, MausY) elif Gegenstand_Art == "Diamant": Neuer_Block = klassen.Diamant(MausX, MausY) elif Gegenstand_Art == "Eiche": Neuer_Block = klassen.Eiche(MausX, MausY) elif Gegenstand_Art == "Birke": Neuer_Block = klassen.Birke(MausX, MausY) elif Gegenstand_Art == "Bruchstein": Neuer_Block = klassen.Bruchstein(MausX, MausY) dict.append(Neuer_Block) else: Rechts_klick = False except: pass Rechts_klick = False