Compare commits

..

13 Commits

9 changed files with 188 additions and 28 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -3,28 +3,29 @@ import random
propability = 40 propability = 40
coins_per_head = 0.5 coins_per_head = 0.5
coins = 5 #wealth = 5000
coins_amount = 1 heads_amount = 1
multiplier = 0.5 multiplier = 0.5
def coin_flip(propability, coins, coins_per_head, coins_amount, multiplier): def coin_flip(propability, wealth, coins_per_head, heads_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 ({coins_amount}x)') print(f'Kopf ({heads_amount}x)')
coins_amount += 1 #Anzahl an hintereinander geworfenen "Köpfen" heads_amount += 1 #Anzahl an hintereinander geworfenen "Köpfen"
if coins_amount >=3: if heads_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
coins += coins_per_head wealth += coins_per_head
print('') print('')
print(f'Du hast {coins} Coins (+ {coins_per_head})') print(f'Du hast {wealth} Coins (+ {coins_per_head})')
input() input()
elif result in range(propability,100): elif result in range(propability,100):
print('Zahl') print('Zahl')
coins_amount = 1 heads_amount = 1
input() input()
coin_flip(propability, coins, coins_per_head, coins_amount, multiplier) coin_flip(propability, wealth, coins_per_head, heads_amount, multiplier)

View File

@@ -31,11 +31,14 @@ 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 kein Zurueck mehr jetzt') print('Schade, es gibt jetzt kein Zurueck mehr')
input() input()
sys.exit() sys.exit()
@@ -43,4 +46,3 @@ title_screen()
a = end_game_or_start_question() a = end_game_or_start_question()
menu_navigation(a) menu_navigation(a)

123
Game/upgrade_menu.py Normal file
View File

@@ -0,0 +1,123 @@
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,14 +1,32 @@
class upgrades: class coin_multiplier(): #Klasse, die das Upgrade darstellt, welches die anzahl des Bonusses beim Kopfwurf veraendert
def __init__(self, name, cost, level): def __init__(self, multiplier:float, cost:int):
self.name = name self.multiplier = multiplier
self.cost = cost self.cost = cost
self.level = level
def buy(self, coins): class flip_chance(): #Upgrade, welches die Chance auf kopf veraendert
if coins >= self.cost: def __init__(self, chance:int, cost:int):
coins -= self.cost self.chance = chance
self.level += 1 self.cost = cost
print(f"{self.name} wurde auf Level {self.level} verbessert")
else: class lucky_coin(): #Upgrade, welches festlegt wie hoch die Wahrscheinlichkeit auf einen LuckyCoin (Jackpot) ist
print("Nicht genug Coins!") def __init__(self, chance:float, cost:int):
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,12 +3,28 @@ 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 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. 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.
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 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. 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
(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.) 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.)
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, ermöglicht das Werfen des Coins und ein System welches für jedes mal Kopf etwas Geld gibt. 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,
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. 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.
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.