Compare commits
5 Commits
de0c88a0d0
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| ac086fc379 | |||
| e1a1f9f61b | |||
| 1301f196bf | |||
| f40a1799ee | |||
| 088e7e695b |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
21
Game/game.py
21
Game/game.py
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,140 +0,0 @@
|
|||||||
from upgrades import coin_multiplier, lucky_coin, flip_chance
|
|
||||||
#import menu
|
|
||||||
import random
|
|
||||||
|
|
||||||
coins_per_head = 0.5
|
|
||||||
wealth = 5000
|
|
||||||
heads_amount = 1
|
|
||||||
|
|
||||||
#Game
|
|
||||||
def coin_flip(wealth, coins_per_head, heads_amount):
|
|
||||||
while True:
|
|
||||||
result = random.randint(0, 100)
|
|
||||||
if result in range(0,base_lvl_flip_chance.chance):
|
|
||||||
print(f'Kopf ({heads_amount}x)')
|
|
||||||
heads_amount += 1 #Anzahl an hintereinander geworfenen "Köpfen"
|
|
||||||
if heads_amount >=3:
|
|
||||||
coins_per_head += base_lvl_coin_multiplier.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(base_lvl_flip_chance.chance,100):
|
|
||||||
print('Zahl')
|
|
||||||
heads_amount = 1
|
|
||||||
answer = input()
|
|
||||||
try:
|
|
||||||
answer = int(answer)
|
|
||||||
if answer == 4:
|
|
||||||
homepage_upgrades(wealth)
|
|
||||||
else:
|
|
||||||
continue
|
|
||||||
except ValueError:
|
|
||||||
continue
|
|
||||||
return result
|
|
||||||
|
|
||||||
class coin_multiplier(): #Klasse, die das Upgrade darstellt, welches die anzahl des Bonusses beim Kopfwurf veraendert
|
|
||||||
def __init__(self, multiplier:float, cost:int):
|
|
||||||
self.multiplier = multiplier
|
|
||||||
self.cost = cost
|
|
||||||
|
|
||||||
class flip_chance(): #Upgrade, welches die Chance auf kopf veraendert
|
|
||||||
def __init__(self, chance:int, cost:int):
|
|
||||||
self.chance = chance
|
|
||||||
self.cost = cost
|
|
||||||
|
|
||||||
class lucky_coin(): #Upgrade, welches festlegt wie hoch die Wahrscheinlichkeit auf einen LuckyCoin (Jackpot) ist
|
|
||||||
def __init__(self, chance:float, cost:int):
|
|
||||||
self.chance = chance
|
|
||||||
self.cost = cost
|
|
||||||
|
|
||||||
|
|
||||||
base_lvl_coin_multiplier = coin_multiplier(0.5, 10)
|
|
||||||
base_lvl_flip_chance = flip_chance(10, 1)
|
|
||||||
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 *= 10
|
|
||||||
base_lvl_flip_chance.chance *= 2
|
|
||||||
#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" Lucky Coin 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 [{base_lvl_flip_chance.chance}% > {base_lvl_flip_chance.chance*2}%] (Preis: {base_lvl_flip_chance.cost} Coins): [1]\n Lucky Coin [{base_lvl_lucky_coin.chance}% > {base_lvl_lucky_coin.chance*2}] (Preis: {base_lvl_lucky_coin.cost} Coins): [2]\n Multiplier [+{base_lvl_coin_multiplier.multiplier} Coins > {base_lvl_coin_multiplier.multiplier*5} Coins] (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')
|
|
||||||
|
|
||||||
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')
|
|
||||||
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')
|
|
||||||
else:
|
|
||||||
print('Du bist zu arm')
|
|
||||||
elif answer == 4:
|
|
||||||
coin_flip(wealth, coins_per_head, heads_amount)
|
|
||||||
|
|
||||||
elif answer not in (1, 2, 3, 4):
|
|
||||||
print('Bitte 1, 2, 3 oder 4!')
|
|
||||||
|
|
||||||
except ValueError:
|
|
||||||
print('Nur Zahlen')
|
|
||||||
input()
|
|
||||||
|
|
||||||
def check_lucky_coin(result, wealth):
|
|
||||||
if result < base_lvl_lucky_coin.chance or result == base_lvl_lucky_coin.chance:
|
|
||||||
print('Herzlichen Glueckwunsch! Du hast den Lucky Coin bekommen')
|
|
||||||
wealth *= 1.5
|
|
||||||
return wealth
|
|
||||||
|
|
||||||
|
|
||||||
result = coin_flip(wealth, coins_per_head, heads_amount)
|
|
||||||
wealth = check_lucky_coin(result, wealth)
|
|
||||||
@@ -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()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
26
Logbuch.txt
26
Logbuch.txt
@@ -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.
|
|
||||||
Reference in New Issue
Block a user