unklares Problem in meinem selbst geschrieben Spiel(Snake)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Babob_hd
User
Beiträge: 3
Registriert: Mittwoch 10. Januar 2018, 16:26

Hallo
Mein vergangenes Wochenende habe ich zu einem großen Teil damit verbracht ein Python Spiel zu Programmieren(Snake),da ich noch ein Neuling im Programmieren bin hat es auch einige Zeit gedauert mir die benötigten Fähigkeiten anzueignen,um so enttäuschter war ich als ich feststehlen musste das irgendwie meine Steuerung nicht läuft.Auch nach mehrmaligem Kontrollieren konnte ich den Fehler nicht ausfindig machen.
Das Problem ist das meine Schlange nicht auf eingaben reagirt sonst läuft es.Das spiel ist mit pygame Befehlen gemacht

Danke schon mal
LG Babob
PS: Soll auf Portable Python 2.7.6.1 laufen

Code: Alles auswählen

import pygame # basic for games
import sys # Ausgang Funktion
import random # z.b. Fr?chte
import time # z.b. game over


check_errors = pygame.init()#spielfeld
if check_errors[1] > 0:
    print("(!) Had {0} initializing errors, exiting...".format(check_errors[1]))
    sys.exit(-1)
else:
    print("(+) Pygamesuccessfully initialized!")

# Play surface
playSurface = pygame.display.set_mode((720, 460)) #wir haben nur ein Argument aus zwei Teilen
pygame.display.set_caption('Sanke game!')


# Colors
red = pygame.Color(255, 0, 0)#game over
green = pygame.Color(0, 255, 0)#snake
black = pygame.Color(0, 0, 0)#score
white = pygame.Color(255, 255, 255)#backround
brown = pygame.Color(165, 42, 42)#food


# FPS Controll
fpsController = pygame.time.Clock()

# Wichtige Variablen
snakePos = [100, 50]
snakeBody = [[100,50], [90,50], [80,50]]

foodPos = [random.randrange(1,72)*10,random.randrange(1,46)*10]
foodSpawn = True

direction = 'RIGHT'
changeto = direction

score = 0

# Game over Funktion
def gameOver():
    myFont = pygame.font.SysFont('monaco', 72)
    GOsurf = myFont.render('Game over!', True, red)
    GOrect = GOsurf.get_rect()
    GOrect.midtop = (360, 15)
    playSurface.blit(GOsurf,GOrect)
    pygame.display.flip()
    showScore(0)
    time.sleep(4)
    pygame.quit() #pygame exit
    sys.exit() #console exit

def showScore(choice=1):
    sFont = pygame.font.SysFont('monaco', 24)
    Ssurf = sFont.render('Score: {0}'.format(score) , True, black)
    Srect = Ssurf.get_rect()
    if choice == 1:
        Srect.midtop = (80, 10)
    else:
        Srect.midtop = (360, 120)
    playSurface.blit(Ssurf,Srect)
    pygame.display.flip()

# Spiel Logik
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RIGHT or event.key == ord('d'):
                changeto = 'RIGHT'
            if event.key == pygame.K_LEFT or event.key == ord('a'):
                changeto = 'LEFT'
            if event.key == pygame.K_UP or event.key == ord('w'):
                changeto = 'UP'
            if event.key == pygame.K_DOWN or event.key == ord('s'):
                changeto = 'DOWN'
            if event.key == pygame.K_ESCAPE:
                pygame.event.post(pygame.event.Event(QUIT))

    # validation of direction
    if changeto == 'RIGHT' and not direction == 'LEFT':
        direction == 'RIGHT'
    if changeto == 'LEFT' and not direction == 'RIGHT':
        direction == 'LEFT'
    if changeto == 'UP' and not direction == 'DOWN':
        direction == 'UP'
    if changeto == 'DOWN' and not direction == 'UP':
        direction == 'DOWN'

    # Update Position Snake
    if direction == 'RIGHT':
        snakePos[0] += 10
    if direction == 'LEFT':
        snakePos[0] -= 10
    if direction == 'UP':
        snakePos[1] -= 10
    if direction == 'DOWN':
        snakePos[1] += 10

    # Snake K?rper mechanismus
    snakeBody.insert(0, list(snakePos))
    if snakePos[0] == foodPos[0] and snakePos[1] == foodPos[1]:
        score += 1
        foodSpawn = False
    else:
        snakeBody.pop()

    #Food Spawn
    if foodSpawn == False:
        [random.randrange(1,72)*10,random.randrange(1,46)*10]
    foodSpawn = True

    # Hintergrund
    playSurface.fill(white)

    # Zeichne Snake
    for pos in snakeBody:
        pygame.draw.rect(playSurface, green, pygame.Rect(pos[0],pos[1],10,10))

    pygame.draw.rect(playSurface, brown, pygame.Rect(foodPos[0],foodPos[1],10,10))

    if snakePos[0] > 710 or snakePos[0] < 0:
        gameOver()
    if snakePos[1] > 450 or snakePos[1] < 0:
        gameOver()

    for block in snakeBody[1:]:
        if snakePos[0] == block[0] and snakePos[1] == block[1]:
            gameOver()

    pygame.display.flip()
    showScore()
    fpsController.tick(20)
Zuletzt geändert von Babob_hd am Mittwoch 10. Januar 2018, 17:05, insgesamt 1-mal geändert.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte verwende Code Tags. Sonst ist dein Code entstellt und unverständlich.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Und außerdem ist es nicht dein Code, den du dir vermeintlich so mühselig erarbeitet hast. Sondern eine Kopie von hier: https://gist.github.com/dixitomkar1809/ ... 5a347ae22c

Gleich mal mit ner blumigen Unwahrheit starten - läuft bei dir. Ist das ne Schulaufgabe?
Babob_hd
User
Beiträge: 3
Registriert: Mittwoch 10. Januar 2018, 16:26

[quote="__deets__"]Und außerdem ist es nicht dein Code, den du dir vermeintlich so mühselig erarbeitet hast. Sondern eine Kopie von hier: https://gist.github.com/dixitomkar1809/ ... 5a347ae22c

Gleich mal mit ner blumigen Unwahrheit starten - läuft bei dir. Ist das ne Schulaufgabe?[

Den Code hatte ich schon selbst mir erarbeitet,da dieser aber nicht funktioniert hat habe ich es einem Kumpel geschickt der schon mehr kann als ich dieser sagte mir er hätte alles "umgeschrieben" bzw verändert, hätte ich gewusst das es sich um ein copy "Werk " handelt hätte ich das Forum damit nicht belässtigt dafür möchte ich mich entschuldigen.

Es ist auch keine Schulaufgabe wollte mich nur ausprobieren.
Wäre trotzdem nett zu wissen warum das nicht läuft wenn es ja anscheinend kopiert ist,liegt das eventuell an meinem Portable Python 2.7.6.1?
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ohne das laufen zu lassen ist schwer zu sagen. Und ich tippe hier auf nem iPhone. Da geht das nicht.

Zum debuggen bietet sich print an. Probier mal aus, ob die entsprechenden Verzweigungen für die tastenanfrage betreten werden. Und so weiter.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

Zitat von der Homepage von Portable Python:
Portable Python is not being developed anymore. At the moment there are several better and more up-to-date alternatives
Da stellt sich direkt die Frage a) warum Portable Python? und b) wie will man heraus finden, ob das Problem am Code oder an Portable Python an sich liegt?

Gruß, noisefloor
Babob_hd
User
Beiträge: 3
Registriert: Mittwoch 10. Januar 2018, 16:26

noisefloor hat geschrieben:Hallo,

Zitat von der Homepage von Portable Python:
Portable Python is not being developed anymore. At the moment there are several better and more up-to-date alternatives
Da stellt sich direkt die Frage a) warum Portable Python? und b) wie will man heraus finden, ob das Problem am Code oder an Portable Python an sich liegt?

Gruß, noisefloor
Mein Kumpel hat mir das halt gegeben und gesagt da hast du alles was du brauchts.
Was benutzt ihr denn zum Coden von Python?
Notpad++?
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

Notepad++ ist ein Editor, PortablePython eine Python-Implementierung. Das hat so rein gar nichts miteinander zu tun...

Ich würde mal sagen, dass 99% der Nutzer CPython, die Referenzimplementierung von Python, die man auch auf python.org herunterladen kann, nutzen. Wobei es unter WIndows IMHO Sinn macht, Anaconda (eine Python-Distribution) zu nutzen, weil das installieren von vielen Modulen damit deutlich einfacher ist.

Wenn mal der seltene Fall eintrifft, dass ich unter Windows ein Python-Programm schreibe, dann nutze ich Geany. Wobei wie gesagt der Editor nichts mit deinem Problem zu tun hat.

Gruß, noisefloor

P.S.: bitte keine kompletten Beiträge zitieren, wenn diese direkt über deine Post stehen. Außer Unübersichtlichkeit bringt das nichts.
Antworten