Python TextMenü Fehler bitte um hilfe?

Skriptsprachen aufgabe Semester 1 python

Ich brauche bei paar Sachen bitte einmal Unterstützung da ich da seit paar stunden nicht weiter komme

1) Meine SpeiseKarte wird nur einmal angezeigt und das beim ersten Anlauf, bei denn nächsten Anlauf wird die SpeiseKarte nicht mehr angezeigt. Das sieht man auch auf dem bild. Was muss ich bei meinem Code ändern, damit meine Speisekarte immer angezeigt wird ?

2) bei def hinzufügen() würde ich gerne die open("SpeiseKarte.txt", "a") verwenden aber ich weis nicht wie ich diese methode da rein bekomme, das ich dann da im terminal etwas reinschreiben kann und es auch in der SpeiseKarte gespeichert wird. bei mir kam da immer error .. haha :D

Ich würde mich freuen wenn mir jemand da weiter helfen könnte da ich noch Anfänger bin und erst seit 2 Wochen Python schreibe und ich da noch Hilfe brauche :P

hier nochmal mein Code zum selber nachschauen :) danke in vorraus

import sys

import time

SpeiseKarteAnzeigen=open("SpeiseKarte.txt", "r")

def anzeigen():

  print(SpeiseKarteAnzeigen.read())

  anykey=input("\nDrücke Enter um zum Hauptmenü zurück zu kommen")

  print()

  Hauptmenü()

   

def hinzufügen():

  print("alles klar")

  anykey=input("\nDrücke Enter um zum Hauptmenü zurück zu kommen")

  print()

  Hauptmenü()

   

def exit():

  print("Das Speise Karten Programm wird Beendet, Speicherungen werden durchgeführt!")

  time.sleep(2)

  sys.exit()

#Das ist mein Hauptmenü funktion

def Hauptmenü():

  print("******************************Hauptmenü******************************")

  time.sleep(1)

  tippe = input("""

            a = SpeiseKarte anzeigen

            n = neues Gericht hinzufügen

            e = Speichern und Programmende

             

            Bitte wähle unter A-a, N-n, E-e aus:

               

  """)

  if tippe == "A" or tippe == "a":

    anzeigen()

     

  elif tippe == "N" or tippe == "n":

    hinzufügen()

     

  elif tippe == "E" or tippe == "e":

    exit()

  else:

    print("Es stehen nur A-a, N-n oder E-e zur Auswahl!")

    Hauptmenü()

Hauptmenü()

   

Bild zum Beitrag
Computer, programmieren, Informatik, Python
Pygame hängt sich bei while True: loop auf?

Hallo,

ich programmiere gerade ein Spiel in Pygame. Auf jeden Fall möchte ich den Ninja Wurfsternen (&anderen Waffen)Ammo geben, dass man eine bestimmte Anzahl von diesen hat und diese nicht spammen kann. Wenn man Space drückt, wird der Ammo Variable eins abgezogen und wenn der Ammo (heißt es der Ammo? ) höher als 0 ist, wird der Befehl self.shoot() ausgeführt. Jetzt mein Problem: Egal, welche Nummer die Variable hat (außer Null), kann ich einmal schießen und danach nicht mehr, auch wenn ich Space drücke. Ich weiß nur nicht wieso. Wenn ich es in einen while True, loop packe, hängt sich pygame auf. Nur wie kann ich das fixen, dass ich öfter als 1 Mal schießen kann. Hier mein benötigter Code (ohne den While True loop):

class Player(pg.sprite.Sprite):

def __init__(self, game, x, y):

self.weapon = 'blowpipe'

self.shurikan = False

self.blowpipe = False

self.xp = PLAYER_XP

self.shoot_ammo = True

self.BLOWPIPE_AMMO = 5

self.SHURIKAN_AMMO = 5

def get_keys(self):

keys = pg.key.get_pressed()

if keys[pg.K_SPACE]:

if self.weapon == 'blowpipe' and self.shoot_ammo == True:

self.BLOWPIPE_AMMO -= 1

if self.BLOWPIPE_AMMO < 0:

self.BLOWPIPE_AMMO = 0

if self.BLOWPIPE_AMMO == 0:

self.shoot_ammo = False

if self.BLOWPIPE_AMMO > 0:

self.shoot()

if self.weapon == 'shurikan' and self.shoot_ammo == True:

self.SHURIKAN_AMMO -= 1

if self.SHURIKAN_AMMO < 0:

self.SHURIKAN_AMMO = 0

if self.SHURIKAN_AMMO == 0:

self.shoot_ammo = False

if self.SHURIKAN_AMMO > 0:

self.shoot()

def shoot(self):

if self.shoot_ammo == True:

now = pg.time.get_ticks()

if now - self.last_shot > WEAPONS[self.weapon]['rate']:

self.last_shot = now

dir = vec(1, 0).rotate(-self.rot)

EinegleicheListegibtesfürBlowpipe.

pos = self.pos + BARREL_OFFSET.rotate(-self.rot)

self.vel = vec(-WEAPONS[self.weapon]['rate'], 0).rotate(-self.rot)

for i in range(WEAPONS[self.weapon]['count']):

spread = uniform(-WEAPONS[self.weapon]['spread'], WEAPONS[self.weapon]['spread'])

Blowpipe(self.game, pos, dir.rotate(spread))

Außerdem gibt es eine Weapons Liste in einem anderen File:

WEAPONS['blowpipe'] = {'img': 'blowpipe.png',

'speed': 500,

'lifetime': 600,

'rate': 300,

'kickback': 0,

'spread': 5,

'damage': 3,

'size': 'blowpipe',

'count': 1}

Eine ähnliche Liste benutze ich für den Shurikan. Thx

Computer, Mac, programmieren, Informatik, Python, Python 3, Pygame, VS Code

Meistgelesene Beiträge zum Thema Python