Rasmus skrev:1. Det fattas mellanrum samt ett kolon på slutet, Dessutom fattas indragningar under.
Det blocken bör se ut något såhär
Kod: Markera allt
def chooseCave ():
cave = ""
while cave != "1" and cave != "2":
print("Do you want to enter Cave 1 or 2?")
cave = input ()
return cave
2. Ligger Pokeball.mid i samma mapp som dodge.py?
Heter den verkligen Pokeball.mid och inte pokeball.mid eller liknande? (hej != Hej)
Det finns en bra nybörjarguide för python där du kan lära dig syntaxen lite bättre
http://wiki.linuxportalen.se/index.php/Bli_ormtjusare
EDIT: Testade koden och hittade lite fler fel.
Först så har du använt input() istället för raw_input() vilket är lite dumt i det här sammanhanget.
Sen har du ett mellanrum mellan ett funktionsnamn och parenteserna.
Du har även stavat fel på randint.
Efter det tror jag koden funkade, även om man kan bli lite irriterad när man trycker y eller skriver yes och koden förväntar sig Y eller Yes. Fixa gärna det också

Jag fixade det där med Pokeball. Som du sa så låg de inte i samma mapp.
Men jag kopierade din kod men fick felmeddelandet:
Kod: Markera allt
File "./zodiac.py", line 16
while cave !="1" and cave ! = "2"
^
SyntaxError: invalid syntax
Och, det andra spelet är 90% klart, tror jag...
Jag får inget felmeddelande, men det är bara en svart ruta när spelet startar. ;__; Kan ni hitta några fel i den här koden?
Kod: Markera allt
#!/usr/bin/env python
import pygame, random, sys
from pygame.locals import *
WINDOWWIDTH = 600
WINDOWHEIGHT = 600
TEXTCOLOR = (255, 0, 0)
BACKGROUNDCOLOR = (255, 255, 255)
FPS = 40
BADDIEMINSIZE = 10
BADDIEMAXSIZE = 40
BADDIEMINSPEED = 1
BADDIEMAZSPEED = 8
ADDNEWBADDIERATE = 6
PLAYERMOVERATE = 5
def terminate ():
pygame.quit()
sys.exit()
def waitForPlayerToPressKey():
while True:
for event in pygame.event.get():
if event.type == QUIT:
terminate()
if event.type == KEYDOWN:
if event.key == K_ESCAPE: # pressing escape quits
terminate ()
return
def playerHasHitBaddie (playerRect, baddies):
for b in baddies:
if playerRect.colliderect(b["rect"]):
return True
return False
def drawText (text, font, surface, x, y):
textobj = font.render(text, 1, TEXTCOLOR)
textrect = textobj.get_rect()
textrect.topleft = (x, y)
surface.blit(textobj, textrect)
# set up pygame, the window, and the mouse cursor
pygame.init()
mainClock = pygame.time.Clock()
windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))
pygame.display.set_caption("Pokeball Frenzy")
pygame.mouse.set_visible(False)
# set up fonts
font = pygame.font.SysFont (None, 48)
# set up sounds
gameOverSound = pygame.mixer.Sound("Pika.wav")
pygame.mixer.music.load("Pokeball.mp3")
# set up images
playerImage = pygame.image.load("pikachu.png")
playerRect = playerImage.get_rect()
baddieImage = pygame.image.load("baddie.jpeg")
# show the "Start" screen
drawText("Dodger", font, windowSurface, (WINDOWWIDTH / 3), (WINDOWHEIGHT / 3))
drawText("Press a key to start.", font, windowSurface, (WINDOWWIDTH / 3) - 30, (WINDOWHEIGHT / 3) + 50)
pygame.display.update()
waitForPlayerToPressKey()
topScore = 0
while True:
# set up the start of the game
baddies = []
score = 0
playerRect.topleft = (WINDOWWIDTH / 2, WINDOWHEIGHT - 50)
moveLeft = moveRight = moveUp = moveDown = False
reverseCheat = slowCheat = False
baddieAddCounter = 0
pygame.mixer.music.play(-1, 0.0)
while True: # the game loop runs while the game part is playing
score += 1 # increase score
for event in pygame.event.get():
if event.type == QUIT:
terminate()
if event.type == KEYDOWN:
if event.key == ord("z"):
reverseCheat = True
if event.key == ord("x"):
slowCheat = True
if event.key == K_LEFT or event.key == ord("a"):
moveRight = False
moveLeft = True
if event.key == K_RIGHT or event.key == ord('d'):
moveLeft = False
moveRight = True
if event.key == K_UP or event.key == ord('w'):
moveDown = False
moveUp = True
if event.key == K_DOWN or event.key == ord('s'):
moveUp = False
moveDown = True
if event.type == KEYUP:
if event.key == ord('z'):
reverseCheat = False
score = 0
if event.key == ord('x'):
slowCheat = False
score = 0
if event.key == K_ESCAPE:
terminate()
if event.key == K_LEFT or event.key == ord('a'):
moveLeft = False
if event.key == K_RIGHT or event.key == ord('d'):
moveRight = False
if event.key == K_UP or event.key == ord('w'):
moveUp = False
if event.key == K_DOWN or event.key == ord('s'):
moveDown = False
if event.type == MOUSEMOTION:
# If the mouse moves, move the player where the cursor is.
playerRect.move_ip(event.pos[0] - playerRect.centerx, event.pos[1] - playerRect.centery)
# Add new baddies at the top of the screen, if needed.
if not reverseCheat and not slowCheat:
baddieAddCounter += 1
if baddieAddCounter == ADDNEWBADDIERATE:
baddieAddCounter = 0
baddieSize = random.randint(BADDIEMINSIZE, BADDIEMAXSIZE)
newBaddie = {'rect': pygame.Rect(random.randint(0, WINDOWWIDTH-baddieSize), 0 - baddieSize, baddieSize, baddieSize),
'speed': random.randint(BADDIEMINSPEED, BADDIEMAXSPEED),
'surface':pygame.transform.scale(baddieImage, (baddieSize, baddieSize)),
}
baddies.append(newBaddie)
# Move the player around.
if moveLeft and playerRect.left > 0:
playerRect.move_ip(-1 * PLAYERMOVERATE, 0)
if moveRight and playerRect.right < WINDOWWIDTH:
playerRect.move_ip(PLAYERMOVERATE, 0)
if moveUp and playerRect.top > 0:
playerRect.move_ip(0, -1 * PLAYERMOVERATE)
if moveDown and playerRect.bottom < WINDOWHEIGHT:
playerRect.move_ip(0, PLAYERMOVERATE)
# Move the mouse cursor to match the player.
pygame.mouse.set_pos(playerRect.centerx, playerRect.centery)
# Move the baddies down.
for b in baddies:
if not reverseCheat and not slowCheat:
b['rect'].move_ip(0, b['speed'])
elif reverseCheat:
b['rect'].move_ip(0, -5)
elif slowCheat:
b['rect'].move_ip(0, 1)
# Delete baddies that have fallen past the bottom.
for b in baddies[:]:
if b['rect'].top > WINDOWHEIGHT:
baddies.remove(b)
# Draw the game world on the window.
windowSurface.fill(BACKGROUNDCOLOR)
# Draw the score and top score.
drawText('Score: %s' % (score), font, windowSurface, 10, 0)
drawText('Top Score: %s' % (topScore), font, windowSurface, 10, 40)
# Draw the player's rectangle
windowSurface.blit(playerImage, playerRect)
# Draw each baddie
for b in baddies:
windowSurface.blit(b['surface'], b['rect'])
pygame.display.update()
# Check if any of the baddies have hit the player.
if playerHasHitBaddie(playerRect, baddies):
if score > topScore:
topScore = score # set new top score
break
mainClock.tick(FPS)
# Stop the game and show the "Game Over" screen.
pygame.mixer.music.stop()
gameOverSound.play()
drawText('GAME OVER', font, windowSurface, (WINDOWWIDTH / 3), (WINDOWHEIGHT / 3))
drawText('Press a key to play again.', font, windowSurface, (WINDOWWIDTH / 3) - 80, (WINDOWHEIGHT / 3) + 50)
pygame.display.update()
waitForPlayerToPressKey()
gameOverSound.stop()