Compare commits

..

5 Commits

Author SHA1 Message Date
ac086fc379 . 2025-12-12 15:06:35 +01:00
e1a1f9f61b Anfang der Upgrades 2025-12-12 14:56:50 +01:00
1301f196bf . 2025-12-04 22:04:07 +01:00
f40a1799ee Jupyter weg 2025-12-04 21:59:11 +01:00
088e7e695b test 2025-12-04 21:55:24 +01:00
9 changed files with 28 additions and 188 deletions

View File

@@ -3,29 +3,28 @@ import random
propability = 40 propability = 40
coins_per_head = 0.5 coins_per_head = 0.5
#wealth = 5000 coins = 5
heads_amount = 1 coins_amount = 1
multiplier = 0.5 multiplier = 0.5
def coin_flip(propability, wealth, coins_per_head, heads_amount, multiplier): def coin_flip(propability, coins, coins_per_head, coins_amount, multiplier):
while True: while True:
result = random.randint(0, 100) result = random.randint(0, 100)
if result in range(0,propability): if result in range(0,propability):
print(f'Kopf ({heads_amount}x)') print(f'Kopf ({coins_amount}x)')
heads_amount += 1 #Anzahl an hintereinander geworfenen "Köpfen" coins_amount += 1 #Anzahl an hintereinander geworfenen "Köpfen"
if heads_amount >=3: if coins_amount >=3:
coins_per_head += multiplier #Coin-Boost für mehrfaches werfen von Kopf hintereinander coins_per_head += multiplier #Coin-Boost für mehrfaches werfen von Kopf hintereinander
else: else:
coins_per_head = 0.5 coins_per_head = 0.5
wealth += coins_per_head coins += coins_per_head
print('') print('')
print(f'Du hast {wealth} Coins (+ {coins_per_head})') print(f'Du hast {coins} Coins (+ {coins_per_head})')
input() input()
elif result in range(propability,100): elif result in range(propability,100):
print('Zahl') print('Zahl')
heads_amount = 1 coins_amount = 1
input() input()
coin_flip(propability, wealth, coins_per_head, heads_amount, multiplier) coin_flip(propability, coins, coins_per_head, coins_amount, multiplier)

View File

@@ -31,14 +31,11 @@ def menu_navigation(a):
print('Super!') print('Super!')
print('') print('')
print('Dann kann es ja losgehen') print('Dann kann es ja losgehen')
input()
print('HINWEIS: mit [4] kannst du nach jedem Wurf das Upgrade-Menu aufrufen')
input()
else: else:
print('Nein? Dann lies nochmal die README.txt und druecke [Enter], wenn du fertig bist') print('Nein? Dann lies nochmal die README.txt und druecke [Enter], wenn du fertig bist')
input('') input('')
elif a == 2: elif a == 2:
print('Schade, es gibt jetzt kein Zurueck mehr') print('Schade, es gibt kein Zurueck mehr jetzt')
input() input()
sys.exit() sys.exit()
@@ -46,3 +43,4 @@ title_screen()
a = end_game_or_start_question() a = end_game_or_start_question()
menu_navigation(a) menu_navigation(a)

View File

@@ -1,123 +0,0 @@
from upgrades import coin_multiplier, lucky_coin, flip_chance
#import menu
import random
propability = 40
coins_per_head = 0.5
wealth = 5000
heads_amount = 1
multiplier = 0.5
#Game
def coin_flip(propability, wealth, coins_per_head, heads_amount, multiplier):
while True:
result = random.randint(0, 100)
if result in range(0,propability):
print(f'Kopf ({heads_amount}x)')
heads_amount += 1 #Anzahl an hintereinander geworfenen "Köpfen"
if heads_amount >=3:
coins_per_head += multiplier #Coin-Boost für mehrfaches werfen von Kopf hintereinander
else:
coins_per_head = 0.5
wealth += coins_per_head
print('')
print(f'Du hast {wealth} Coins (+ {coins_per_head})')
answer = input()
try:
answer = int(answer)
if answer == 4:
homepage_upgrades(wealth)
else:
continue
except ValueError:
continue
elif result in range(propability,100):
print('Zahl')
heads_amount = 1
answer = input()
try:
answer = int(answer)
if answer == 4:
homepage_upgrades(wealth)
else:
continue
except ValueError:
continue
base_lvl_coin_multiplier = coin_multiplier(0.5, 10)
base_lvl_flip_chance = flip_chance(10, 0)
base_lvl_lucky_coin = lucky_coin(0.5, 10)
def lvl_up_multiplier():
lvl_up = True
if lvl_up == True:
base_lvl_coin_multiplier.cost *= 2.5
base_lvl_coin_multiplier.multiplier *= 5
#print(f' CM: {base_lvl_coin_multiplier.cost}')
print(f' Coin Multiplier liegt bei: {base_lvl_coin_multiplier.multiplier}')
def lvl_up_flip_chance():
lvl_up = True
if lvl_up == True:
base_lvl_flip_chance.cost += 1
base_lvl_flip_chance.cost *= 6
base_lvl_flip_chance.chance *= 1.5
#print(f" FC Cost: {base_lvl_flip_chance.cost}")
print(f" Flip Chance liegt bei: {base_lvl_flip_chance.chance}")
def lvl_up_lucky_coin():
lvl_up = True
if lvl_up == True:
base_lvl_lucky_coin.cost *= 3
base_lvl_lucky_coin.chance *= 1.5
#print(f" LC Cost: {base_lvl_lucky_coin.cost}")
print(f" Lucky Coin Chance liegt bei: {base_lvl_lucky_coin.chance}")
def homepage_upgrades(wealth):
while True:
answer = input(f' Flip Chance (Preis: {base_lvl_flip_chance.cost} Coins): [1]\n Lucky Coin (Preis: {base_lvl_lucky_coin.cost} Coins): [2]\n Multiplier (Preis: {base_lvl_coin_multiplier.cost} Coins): [3]\n Zum Game: [4]')
try:
answer = int(answer)
if answer == 1:
if wealth >= base_lvl_flip_chance.cost:
lvl_up_flip_chance()
wealth -= base_lvl_flip_chance.cost
print(f' Erfolgreich geupgradet. Du hast noch {wealth} Coins')
break
else:
print('Du bist zu arm')
elif answer == 2:
if wealth >= base_lvl_lucky_coin.cost:
lvl_up_lucky_coin()
wealth -= base_lvl_lucky_coin.cost
print(f' Erfolgreich geupgradet. Du hast noch {wealth} Coins')
break
else:
print('Du bist zu arm')
elif answer == 3:
if wealth >= base_lvl_coin_multiplier.cost:
lvl_up_multiplier()
wealth -= base_lvl_coin_multiplier.cost
print(f' Erfolgreich geupgradet. Du hast noch {wealth} Coins')
break
else:
print('Du bist zu arm')
elif answer == 4:
coin_flip(propability, wealth, coins_per_head, heads_amount, multiplier)
elif answer not in (1, 2, 3, 4):
print('Bitte 1, 2, 3 oder 4!')
except ValueError:
print('Nur Zahlen')
input()
coin_flip(propability, wealth, coins_per_head, heads_amount, multiplier)

View File

@@ -1,32 +1,14 @@
class coin_multiplier(): #Klasse, die das Upgrade darstellt, welches die anzahl des Bonusses beim Kopfwurf veraendert class upgrades:
def __init__(self, multiplier:float, cost:int): def __init__(self, name, cost, level):
self.multiplier = multiplier self.name = name
self.cost = cost self.cost = cost
self.level = level
class flip_chance(): #Upgrade, welches die Chance auf kopf veraendert def buy(self, coins):
def __init__(self, chance:int, cost:int): if coins >= self.cost:
self.chance = chance coins -= self.cost
self.cost = cost self.level += 1
print(f"{self.name} wurde auf Level {self.level} verbessert")
class lucky_coin(): #Upgrade, welches festlegt wie hoch die Wahrscheinlichkeit auf einen LuckyCoin (Jackpot) ist else:
def __init__(self, chance:float, cost:int): print("Nicht genug Coins!")
self.chance = chance
self.cost = cost
base_lvl_coin_multiplier = coin_multiplier(0.5, 10)
def lvl_up():
lvl_up = True
if lvl_up == True:
base_lvl_coin_multiplier.cost *= 2.5
base_lvl_coin_multiplier.multiplier *= 5
print(base_lvl_coin_multiplier.cost)
lvl_up()

View File

@@ -3,28 +3,12 @@ Linus und ich wollten gerne ein 2D RPG-Game mit Python coden. Allerdings konnten
wir die Schullaptops nutzen wollten. Auch nachdem wir unseren Wissens alles richtig installiert hatten, haben wir es nicht hinbekommen die Instanz zum laufen zu kriegen. wir die Schullaptops nutzen wollten. Auch nachdem wir unseren Wissens alles richtig installiert hatten, haben wir es nicht hinbekommen die Instanz zum laufen zu kriegen.
Tag 2: Tag 2:
Heute haben wir es ein weiteres mal probiert, PyGame zu installieren usw. Nach einigen Minuten haben wir es sogar bei Linus auf dem LapTop geschafft und haben uns direkt Ideen gemacht, wie wir mit unserem Projekt starten sollen. Doch schon nach einiger Zeit waren wir Heute haben wir es ein weiteres mal probiert, PyGame zu installieren usw. Nach einigen Minuten haben wir es sogar bei Linus auf dem LapTop geschafft und haben uns direkt Ideen gemacht, wie wir mit unserem Projekt starten sollen. Doch schon nach einiger Zeit waren wir uns einig, dass wir mit unserem Projekt ein wenig zu hoch gezielt haben. Besonders mit Blick auf den knappen Zeitplan schien die Umsetzung extrem Anspruchsvoll. Deshalb haben wir uns kurzer Hand dazu entschieden ein anderes Projektt zu starten, ohne PyGame. Und so sind wir auf das Spiel Coin Flipper gekommen. Da die Stunde dann leider auch schon zuende war, mussten wir unsere Planungen auf die nächste Stunde verschieben.
uns einig, dass wir mit unserem Projekt ein wenig zu hoch gezielt haben. Besonders mit Blick auf den knappen Zeitplan schien die Umsetzung extrem Anspruchsvoll. Deshalb haben wir uns kurzer Hand dazu entschieden ein anderes Projektt zu starten, ohne PyGame. Und so sind
wir auf das Spiel Coin Flipper gekommen. Da die Stunde dann leider auch schon zuende war, mussten wir unsere Planungen auf die nächste Stunde verschieben.
Tag 3: Tag 3:
Leider war Linus heute krank und so musste ich mich alleine an unser neues Ziel setzten. Um ein Grundgerüst für unser Spiel zu schaffen, habe ich mich daran probiert ein Zufallssystem zu coden, bei dem nach Eingabe ein imaginärer "Coin" geworfen wird, der mit einer Leider war Linus heute krank und so musste ich mich alleine an unser neues Ziel setzten. Um ein Grundgerüst für unser Spiel zu schaffen, habe ich mich daran probiert ein Zufallssystem zu coden, bei dem nach Eingabe ein imaginärer "Coin" geworfen wird, der mit einer niedrigen Wahrscheinlichkeit auf Kopf landet. Das hat auch gut geklappt und war nach einiger Zeit fertig. Dazu wollte ich dann noch eine Art Counter und ein Geldsystem coden, bei dem man nach einem Kopf Wurf Geld bekommt.
niedrigen Wahrscheinlichkeit auf Kopf landet. Das hat auch gut geklappt und war nach einiger Zeit fertig. Dazu wollte ich dann noch eine Art Counter und ein Geldsystem coden, bei dem man nach einem Kopf Wurf Geld bekommt. (Jetzt habe ich zuhause festgestellt, dass ich einen Fehler beim Comitten des Codes gemacht habe, und dieser deshalb nicht auf den Server hochgeladen wurde. Da wir aber nur noch 2 weitere Unterrichtsstunden haben, haben wir uns dazu entschieden, zuhause weiterzuarbeiten bzw. den verlorenen Code neu zu coden.)
(Jetzt habe ich zuhause festgestellt, dass ich einen Fehler beim Comitten des Codes gemacht habe, und dieser deshalb nicht auf den Server hochgeladen wurde. Da wir aber nur noch 2 weitere Unterrichtsstunden haben, haben wir uns dazu entschieden, zuhause weiterzuarbeiten bzw.
den verlorenen Code neu zu coden.)
Zwischen Tag 3 und Tag 4: Zwischen Tag 3 und Tag 4:
Linus hat nach Beratung mit mir und meinen Ideen aus letzter Stunde bereits einen ersten Entwurf für das Spiel und ein Spielmenü gecodet. Das Menü lässt den Spieler über Start und Stop des Spiels entscheiden und verweist auf die READ.ME Datei. Das Spiel an sich, Linus hat nach Beratung mit mir und meinen Ideen aus letzter Stunde bereits einen ersten Entwurf für das Spiel und ein Spielmenü gecodet. Das Menü lässt den Spieler über Start und Stop des Spiels entscheiden und verweist auf die READ.ME Datei. Das Spiel an sich, ermöglicht das Werfen des Coins und ein System welches für jedes mal Kopf etwas Geld gibt.
ermöglicht das Werfen des Coins und ein System welches für jedes mal Kopf etwas Geld gibt. Ich habe mich dann später an die beiden Codes gesetzt und einige kleine Optimierungen vorgenommen. Bei dem Menü lediglich eine weitere Absicherung falls der Spieler das falsche eingibt und bei dem Spiel habe ich einen Counter hinzugefügt, der zählt, wie oft Kopf hintereinander geworfen wurde. Zusätzlich habe ich eine Art Multiplikator für das Geld gecodet, welcher den Geldbetrag den man pro Kopf bekommt immer weiter steigert solange Kopf hintereinander geworfen wurde. Zuletzt habe ich die von Linus bereits gecodete Darstellungsweise mit meinen Features erweitert.
Ich habe mich dann später an die beiden Codes gesetzt und einige kleine Optimierungen vorgenommen. Bei dem Menü lediglich eine weitere Absicherung falls der Spieler das falsche eingibt und bei dem Spiel habe ich einen Counter hinzugefügt, der zählt, wie oft Kopf
hintereinander geworfen wurde. Zusätzlich habe ich eine Art Multiplikator für das Geld gecodet, welcher den Geldbetrag den man pro Kopf bekommt immer weiter steigert solange Kopf hintereinander geworfen wurde. Zuletzt habe ich die von Linus bereits gecodete Darstellungsweise
mit meinen Features erweitert.
15.12.:
Heute haben Linus und ich uns zusammengesetzt um das Projekt zu Ende zu bringen. Wichtig ist, dass wir uns diesmal nicht aufgeteilt haben, sondern alles zusammen gemacht haben (wie in den Comittments vermerkt), da wir einige kompliziertere Schritte vor uns hatten.
Als erstes haben wir mithilfe von Klassen und Funktionen ein Upgrade System gecodet. Sprich wir haben jetzt 3 verschiedene Upgrades die sich immer weiter hochleveln lassen, wobei der Preis für jedes Level zunhemend steigt. Um jederzeit während des Spiels auf diese Upgrades
zugreifen zu können, haben wir ein Upgrade Menü gecodet, was sich jederzeit öffnen und wieder schließen lässt. Zusätzlich mussten wir natürlich ein Kaufsystem dazucoden, welches überprüft ob der SPieler überhaupt genug Geld hat.
Im nächsten Schritt haben wir uns daran gesetzt die einzelnen Komponenten des Spiels zu einem Spiel zusammenzufügen. Das heißt Menü, Gamecode, Upgrade-Menü.
Zzwischendurch haben wir immer wieder Formatverbesserungen oder auch Absicherungen hinzugefügt um den Code so immer weiter zu optimieren.