pygame-python
Hej!
Undrar om det finns någon som kan hjälpa mig med min kod. Det är så att den bara hoppar spel intro samt skippar visa funktioner.
Och går endast till spel slinga. Skulle uppskata om det fanns någon som kunde se vad det är för fel på koden.
Tack på förhand
import pygame
import time
import random
class Inställningar:
def __init__(self):
self.skärm_bredd = 800
self.skärm_höjd = 600
self.spelSkärm = pygame.display.set_mode((self.skärm_bredd, self.skärm_höjd))
#skärmen
self.svart = (0,0,0)
self.vit = (255,255,255)
self.röd = (255,0,0)
self.ljus_röd = (255,102,102)
self.grön = (0,204,0)
self.ljus_grön = (153,255,153)
#färger
self.spelfigur = pygame.image.load("mario1.png")
self.bullet = pygame.image.load("bullet_1.png")
self.font = pygame.font.SysFont(None, 25)
self.mouse = pygame.mouse.get_pos()
self.klick = pygame.mouse.get_pressed()
def meddelande_skärm(self, text):
#meddelande för skärmen, läge,teckensnitt,storlek och font
storText = pygame.font.Font("SMB_font.ttf", 155)
TextSurf, TextRect = self.text_föremål(text, storText)
TextRect.center = ((self.skärm_bredd/2), (self.skärm_höjd/2))
self.spelSkärm.blit(TextSurf, TextRect)
pygame.display.update()
time.sleep(2)
def text_föremål(self, text, font):
#Textens färg
textYta = font.render(text, True, self.svart)
return textYta, textYta.get_rect()
def knappar(self, sms, x, y, b, h, över_färg, utan_färg, action=None):
#x=x-led
#y=y-led
#b=bredden
#h=höjden
#e_färg= färg efter
#f_färg= färg före
if x+b > self.mouse[0] > x and y+h > self.mouse[1] > y:
pygame.draw.rect(self.spelSkärm, utan_färg, (x,y,b,h))
if self.klick [0] == 1 and action != None:
action()
else:
pygame.draw.rect(self.spelSkärm, över_färg, (x,y,b,h))
litenText = pygame.font.Font("SMB_font.ttf", 20)
TextSurf, TextRect = self.text_föremål(sms, litenText)
TextRect.center = ( (x+(b/2)),(y + (h/2)) )
self.spelSkärm.blit(TextSurf, TextRect)
def figur(self, x, y):
#figurens läge
self.spelSkärm.blit(self.spelfigur,(x,y))
def motståndare(self, bulletx, bullety, bulletb, bulleth):
"""infogar motståndare bullet och parameter starläge x och y
samt motsåndares bredd och höjd"""
#bullets = [pygame.image.load("bullet 1.png"), pygame.image.load("bullet 2.png")]
self.spelSkärm.blit(self.bullet, [bulletx, bullety, bulletb, bulleth])
class Spel:
def __init__(self, inst):
self.inst = inst
self.pause = False
self.klocka = pygame.time.Clock()
self.klick_ljud = pygame.mixer.Sound("smb_kick.wav")
self.pause_ljud = pygame.mixer.Sound("smb_pause.wav")
self.gameOver_ljud = pygame.mixer.Sound("krasch.wav")
self.score_ljud = pygame.mixer.Sound("smb_coin.wav")
self.musik = pygame.mixer.music.load("smb_medley.wav")
self.intro_bakgrund = pygame.image.load("mario2s1.gif")
#ljud och musik
self.mouse = pygame.mouse.get_pos()
self.klick = pygame.mouse.get_pressed()
def hinder_undvikt(self, count):
#räknar undvikta hinder
font = pygame.font.SysFont(None, 25)
text = font.render("Undvikt: "+str(count), True, self.inst.svart)
self.inst.spelSkärm.blit(text,(0,0))
def time_out(self):
#pausar programmet samt möjligheter att att spela vidare eller inte
pygame.mixer.Sound.play(self.pause_ljud)
pygame.mixer.music.pause()
pygame.mixer.Sound.play(self.klick_ljud)
#pausar bakgrundsmusik och spelar pauseljudet
storText = pygame.font.Font("SMB_font.ttf", 155)
TextSurf, TextRect = self.inst.text_föremål("Paused", storText)
TextRect.center = ((self.inst.skärm_bredd/2), (self.inst.skärm_höjd/2))
self.inst.spelSkärm.blit(TextSurf, TextRect)
#pause lokalisering samt utseende
while self.pause:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
#gameDisplay.fill(white)
self.inst.knappar("Fortsätt", (self.inst.skärm_bredd/2-60),370,120,50, self.inst.grön, self.inst.ljus_grön, self.time_in())
self.inst.knappar("Avsluta", (self.inst.skärm_bredd/2-60),470,120,50, self.inst.röd, self.inst.ljus_röd, self.avsluta_spel())
#knapparnas utseende samt text
pygame.display.update()
klocka.tick(15)
def time_in(self):
#återaktivera spelet
self.pause
pygame.mixer.music.unpause()
pygame.mixer.Sound.play(self.klick_ljud)
#self.pause = False
def avsluta_spel(self):
#avslutar spelet
pygame.mixer.Sound.play(self.klick_ljud)
pygame.quit()
quit()
def krasch(self):
#Hanterar krasch ljud, text, valmöjligheter
pygame.mixer.music.play(-1)
pygame.mixer.music.stop()
pygame.mixer.Sound.play(self.gameOver_ljud)
storText = pygame.font.Font("SMB_font.ttf", 108)
TextSurf, TextRect = self.inst.text_föremål("You crashed", storText)
TextRect.center = ((self.inst.skärm_bredd/2), (self.inst.skärm_höjd/2))
self.inst.spelSkärm.blit(TextSurf, TextRect)
#textens utseeend vid krasch
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
#gameDisplay.fill(white)
self.inst.knappar("Nytt spel", (self.inst.skärm_bredd/2-60),350,120,50, self.inst.grön,self.inst.ljus_grön, self.spel_slinga())
self.inst.knappar("Avsluta", (self.inst.skärm_bredd/2-60),450,120,50, self.inst.röd, self.inst.ljus_röd, self.avsluta_spel())
#knappar som dyker upp vid krasch
pygame.display.update()
self.klocka.tick(15)
def spel_intro(self):
#hanterar intro-funktionen
pygame.mixer.music.play(-1)
intro = True
while intro:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
self.inst.spelSkärm.blit(self.intro_bakgrund, [0,0])
storText = pygame.font.Font("SMB_font.ttf", 70)
TextSurf, TextRect = self.inst.text_föremål("Dodge the bullet", storText)
TextRect.center = ((self.inst.skärm_bredd/2), (self.inst.skärm_höjd/2))
self.inst.spelSkärm.blit(TextSurf, TextRect)
#intr textens utseende
self.inst.knappar("Start", (self.inst.skärm_bredd/2-60),350,120,50, self.inst.grön, self.inst.ljus_grön, self.spel_slinga())
self.inst.knappar("Avsluta", (self.inst.skärm_bredd/2-60),450,120,50, self.inst.röd, self.inst.ljus_röd, self.avsluta_spel())
#knapparnas utseende och uppgift
pygame.display.update()
self.klocka.tick(15)
def spel_slinga(self):
#spelslingans utseende och spelfunktioner
self.pause
pygame.mixer.Sound(self.klick_ljud)
pygame.mixer.music.play(-1)
spel_bakgrund = pygame.image.load("mario_b.png")
x = random.randrange(0, self.inst.skärm_bredd)
y = (self.inst.skärm_höjd * 0.78)
#avgör spelfigurens startläge
x_ändring = 0
y_ändring = 0
#startvärde för ändring av spelfigures läge i x och y
figur_bredd = 67
figur_höjd = 132
#figurens storlek
bullet_bredd = 63
bullet_höjd = 100
bullet_starty = -600
bullet_startx = random.randrange(0,self.inst.skärm_bredd)
bullet_fart = 4
#var hindret startar och storlek
undvikt = 0
spelExistens = False
while not spelExistens:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x_ändring = -5
if event.key == pygame.K_RIGHT:
x_ändring = 5
if event.key == pygame.K_p:
self.pause = True
self.time_out()
if event.key == pygame.K_q:
quit()
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
x_ändring = 0
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
y_ändring = -5
if event.key == pygame.K_DOWN:
y_ändring = 5
if event.type == pygame.KEYUP:
if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
y_ändring = 0
#styr spelfigurens rörelse samt knapp för pausefunktion
x += x_ändring
y += y_ändring
#nya värden för spelfigurens position efter styrning av tangentbordet
self.inst.spelSkärm.blit(spel_bakgrund, [0,0])
#bakgrunden först, placerar bakgrund bakom figurerna och anger vad utgår ifrån
self.inst.figur(x,y)
#figurens värde i x och y-led
self.inst.motståndare(bullet_startx, bullet_starty, bullet_bredd, bullet_höjd)
bullet_starty += bullet_fart
#moståndarens fuktion och startvärde
self.hinder_undvikt(undvikt)
#hämtar hinder undvikt fuktionen
if x > self.inst.skärm_bredd - figur_bredd or x < 0:
self.krasch()
if y > self.inst.skärm_höjd - figur_höjd or y < 0:
self.krasch()
if bullet_starty > self.inst.skärm_höjd:
bullet_starty = 0 - bullet_höjd
bullet_startx = random.randrange(0, self.inst.skärm_bredd)
undvikt +=1
pygame.mixer.Sound.play(self.score_ljud)
bullet_fart +=1
if y < bullet_starty + bullet_höjd and y + bullet_höjd > bullet_starty:
[i]#regelera vad som gäller för figuren i y-led så att den inte kraschar[/i]
[color="#008000"][b]if[/b][/color] x [color="#666666"]>[/color] bullet_startx [color="#AA22FF"][b]and[/b][/color] x [color="#666666"]<[/color] bullet_startx [color="#666666"]+[/color] bullet_bredd [color="#AA22FF"][b]or[/b][/color] x [color="#666666"]+[/color] figur_bredd [color="#666666"]>[/color] bullet_startx [color="#AA22FF"][b]and[/b][/color] x [color="#666666"]+[/color] figur_bredd [color="#666666"]<[/color]bullet_startx [color="#666666"]+[/color] bullet_bredd:
[color="#008000"]self[/color][color="#666666"].[/color]krasch()
[color="#408080"][i]#fixar in bilden [/i][/color]
pygame[color="#666666"].[/color]display[color="#666666"].[/color]update()
[color="#408080"][i]#spelslingans utseende och spelfunktioner[/i][/color]
pygame[color="#666666"].[/color]display[color="#666666"].[/color]update()
[color="#008000"]self[/color][color="#666666"].[/color]klocka[color="#666666"].[/color]tick([color="#666666"]30[/color])
[color="#008000"][b]def[/b][/color] [color="#0000FF"]main[/color]():
pygame[color="#666666"].[/color]init()
Ins [color="#666666"]=[/color] Inställningar()
Game [color="#666666"]=[/color] Spel(Ins)
pygame[color="#666666"].[/color]display[color="#666666"].[/color]update()
Game[color="#666666"].[/color]spel_intro()
Game[color="#666666"].[/color]spel_slinga()
pygame[color="#666666"].[/color]quit()
main()
quit()