Code: Alles auswählen
def refresh(asteroiden_liste,x,y,ausrichtung,level,schaden,schuesse,strg,schuesse_liste):
schuess=keyboard_action(ausrichtung,x,y, strg,schuesse,schuesse_liste)
screen.fill(black)
screen.blit(hintergrundbild,[100,0])
screen.blit((raumschiffbilder[ausrichtung]),[x,y])
for z in range(level+1):
screen.blit(asteroiden_liste[z][0],[asteroiden_liste[z][1],asteroiden_liste[z][2]])
if schuesse==1:
schuesse_liste[1]=schuesse_liste[1]-10
screen.blit(schuss,[schuesse_liste[0],schuesse_liste[1]])
if schuesse_liste[1]<0:
schuesse=0
refreshinterface(level, schaden)
pygame.display.flip()
return schuesse
#unterkategorie von refresh, aktualisiert das interface(level,schaden)
def refreshinterface(level,schaden):
interfacetext=pygame.font.Font('font.ttf',20)
leveltext=interfacetext.render('Level '+str(level),1, white)
screen.blit(leveltext,[680,565])
schadentext=interfacetext.render(str(schaden)+'% Schaden',1,white)
screen.blit(schadentext,[40,565])
#ueberprueft ob mauszeiger beim klick ueber dem button war und leitet ggf. weiter
def click(erstelltx,erstellty,breite,hoehe,umleitung,strg_angepasst,strg,musik):
mausx=pygame.mouse.get_pos()[0]
mausy=pygame.mouse.get_pos()[1]
if mausx>erstelltx and mausx<(erstelltx+breite) and mausy>erstellty and mausy<(erstellty+hoehe):
if umleitung==1:
if strg_angepasst==1:
menu_starten(strg,musik)
else:
menutext=pygame.font.Font('font.ttf',20)
fehler=menutext.render('Steuerung wurde noch nicht festgelegt.',1, red,black)
screen.blit(fehler,[100,280])
pygame.display.flip()
if umleitung==2:
menu_highscore(strg_angepasst,strg,musik)
if umleitung==3:
menu_optionen(strg_angepasst,strg,musik)
if umleitung==4:
menu_beenden()
if umleitung==5:
menu(strg_angepasst,strg,musik)
def vorwaertsrechner(ausrichtung,x,y):
if ausrichtung==0:
y=y+8
if ausrichtung==1:
y=y+6
x=x-2
if ausrichtung==2:
y=y+4
x=x-4
if ausrichtung==3:
y=y+2
x=x-6
if ausrichtung==4:
x=x-8
if ausrichtung==5:
y=y-2
x=x-6
if ausrichtung==6:
y=y-4
x=x-4
if ausrichtung==7:
y=y-6
x=x-2
if ausrichtung==8:
y=y-8
if ausrichtung==9:
y=y-6
x=x+2
if ausrichtung==10:
y=y-4
x=x+4
if ausrichtung==11:
y=y-2
x=x+6
if ausrichtung==12:
x=x+8
if ausrichtung==13:
y=y+2
x=x+6
if ausrichtung==14:
y=y+4
x=x+4
if ausrichtung==15:
y=y+6
x=x+2
return x,y
def rueckwaertsrechner(ausrichtung,x,y):
if ausrichtung==0:
y=y-8
if ausrichtung==1:
y=y-6
x=x+2
if ausrichtung==2:
y=y-4
x=x+4
if ausrichtung==3:
y=y-2
x=x+6
if ausrichtung==4:
x=x+8
if ausrichtung==5:
y=y+2
x=x+6
if ausrichtung==6:
y=y+4
x=x+4
if ausrichtung==7:
y=y+6
x=x+2
if ausrichtung==8:
y=y+8
if ausrichtung==9:
y=y+6
x=x-2
if ausrichtung==10:
y=y+4
x=x-4
if ausrichtung==11:
y=y+2
x=x-6
if ausrichtung==12:
x=x-8
if ausrichtung==13:
y=y-2
x=x-6
if ausrichtung==14:
y=y-4
x=x-4
if ausrichtung==15:
y=y-6
x=x-2
return x,y
#ueberprueft ob das raumschiff im bild ist. wenn nicht -> game over
def verschollen(x,y):
if x<-64 or x>864 or y<-64 or y>664:
gameover(True)
def keyboard_action(ausrichtung,x,y,strg,schuesse,schuesse_liste):
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key==strg[0]:
x,y=vorwaertsrechner(ausrichtung,x,y)
if event.key==strg[1]:
x,y=rueckwaertsrechner(ausrichtung,x,y)
if event.key==strg[2]:
pygame.key.set_repeat(2,2)
if ausrichtung==0:
ausrichtung=15
else:
ausrichtung=ausrichtung-1
pygame.key.set_repeat(1,1)
if event.key==strg[3]:
pygame.key.set_repeat(2,2)
if ausrichtung==15:
ausrichtung=0
else:
ausrichtung=ausrichtung+1
if event.key==strg[4]:
if schuesse==0:
schuesse=1
schuesse_liste=[x+30,y-10]
return x,y,ausrichtung,schuesse,schuesse_liste
def collision(ausrichtung,asteroiden_liste,x,y,level,asteroids_out,schuesse,schuesse_liste):
for k in range(level+1):
if asteroiden_liste[k][2]>0:
if asteroiden_liste[k][1]+asteroiden_liste[k][4]>x+24 and asteroiden_liste[k][1]<x+40:
if asteroiden_liste[k][2]+asteroiden_liste[k][4]>y+24 and asteroiden_liste[k][2]<y+40:
gameover()
if schuesse==1:
if asteroiden_liste[k][2]>0:
if schuesse_liste[0]+5>asteroiden_liste[k][1] and schuesse_liste[0]<asteroiden_liste[k][1]+asteroiden_liste[k][4]:
if schuesse_liste[1]+5>asteroiden_liste[k][2] and schuesse_liste[1]<asteroiden_liste[k][2]+asteroiden_liste[k][4]:
asteroiden_liste=asteroiden_liste[k][0],asteroiden_liste[k][1],asteroiden_liste[k][2]-2500,asteroiden_liste[k][3],asteroiden_liste[k][4]
asteroids_out=asteroids_out+1
return asteroids_out,asteroiden_liste
def gameover(verschollen_status = False):
if verschollen_status==1:
hinweis_verschollen=gameovertext.render('Im Weltall verschollen..',1, red)
screen.blit(hinweis_verschollen,[100,100])
else:
gameovertext=pygame.font.Font('font.ttf',30)
hinweis=gameovertext.render('Game Over',1, red)
screen.blit(hinweis,[100,100])
pygame.display.flip()
pygame.time.delay(1000)
menu()
def level_ablauf(ausrichtung,x,y,level,schaden,schuesse,strg,schuesse_liste):
asteroids_out=0
level=level+1
asteroiden_liste=[]
for b in range(level+1):
zahl1=randint(3,9)
zahl=zahl1*10
speed=randint(4,7)
asteroid_spawn_x=randint(0,800-zahl)
asteroid_spawn_y=0-zahl
out=0
asteroid_bild,asteroid_x,asteroid_y=pygame.image.load('bilder/asteroid'+str(zahl)+'.gif'),asteroid_spawn_x,asteroid_spawn_y
asteroid_daten=asteroid_bild,asteroid_x,asteroid_y,speed,zahl
asteroiden_liste.append(asteroid_daten)
screen.blit(asteroid_bild,[asteroid_spawn_x,asteroid_spawn_y])
while 1:
for c in range(level+1):
a=asteroiden_liste[c][3]
b=asteroiden_liste[c][2]
asteroiden_liste[c]=asteroiden_liste[c][0],asteroiden_liste[c][1],a+b,asteroiden_liste[c][3],asteroiden_liste[c][4]
if asteroiden_liste[c][2]>600:
asteroiden_liste[c]=asteroiden_liste[c][0],asteroiden_liste[c][1],asteroiden_liste[c][2]-2500,asteroiden_liste[c][3],asteroiden_liste[c][4]
asteroids_out=asteroids_out+1
if asteroids_out==level+1:
level_ablauf(ausrichtung,x,y,level,schaden,schuesse,strg,schuesse_liste)
x, y,ausrichtung,schuesse,schuesse_liste =keyboard_action(ausrichtung,x,y,strg,schuesse,schuesse_liste)
asteroids_out,asteroiden_liste=collision(ausrichtung,asteroiden_liste,x,y,level,asteroids_out,schuesse,schuesse_liste)
verschollen(x,y)
schuesse=refresh(asteroiden_liste,x,y,ausrichtung,level,schaden,schuesse,strg,schuesse_liste)
#das hauptmenue
def menu(strg_angepasst=0,strg=[],musik=0):
pygame.mouse.set_visible(1)
screen.fill(black)
screen.blit(menuhintergrund,[0,0])
screen.blit(icon_starten,[550,150])
screen.blit(icon_highscore,[550,200])
screen.blit(icon_optionen,[550,250])
screen.blit(icon_beenden,[550,300])
pygame.display.flip()
while 1:
for event in pygame.event.get():
if event.type == MOUSEBUTTONDOWN:
click(550,150,238,41,1,strg_angepasst,strg,musik)
click(550,200,239,45,2,strg_angepasst,strg,musik)
click(550,250,240,43,3,strg_angepasst,strg,musik)
click(550,300,240,45,4,strg_angepasst,strg,musik)
pygame.display.flip()
#startet das eigentliche spiel
def menu_starten(strg,musik):
if musik!=0:
track=pygame.mixer.Sound(musik)
track.play()
schiffx=368
schiffy=536
level=0
schaden=0
ausrichtung=8
pygame.key.set_repeat(1,1)
schuesse=0
schuesse_liste=[]
verschollen_status=0
level_ablauf(ausrichtung,schiffx,schiffy,level,schaden,schuesse,strg,schuesse_liste)
menu ()