Ich mache ein Space Invaders-ähnliches Spiel. Ich habe die erste erste Stufe beendet, die 4 Reihen von 10 Aliens hat. Ich möchte ein weiteres Level hinzufügen, wo es 4 Reihen von 17 Aliens gibt, um es schwierig zu machen und das Zeitlimit zu reduzieren. Ich habe einen separaten Modulnamen "LEVEL2" gemacht, was ich versucht habe zu importieren und auszuführen, nachdem Level 1 abgeschlossen ist. Kann mir bitte jemand helfen, das herauszufinden?Wie kann ich ein Level 2 in meinem Spiel hinzufügen?
Vielen Dank im Voraus
MAIN GAME (Stufe 1):
import pygame, random, sys
from time import sleep
from pygame.locals import *
import subprocess
import LEVEL2
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
NAVYBLUE = (0,0,45)
GREY = (128,128,128)
screen_width = 900
screen_height = 650
pygame.init()
OpenScreen = pygame.display.set_mode([screen_width, screen_height])
screen = pygame.display.set_mode([screen_width, screen_height])
class Block(pygame.sprite.Sprite):
def __init__(self, image):
aliens = pygame.image.load('aliens.png')
aliens = pygame.transform.scale(aliens, (20,20))
super(Block, self).__init__()
self.image = aliens
self.rect = self.image.get_rect()
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.mouse.set_visible(0)
ship = pygame.image.load('spaceship.png')
ship = pygame.transform.scale(ship, (20,30))
super(Player, self).__init__()
self.image = ship
self.rect = self.image.get_rect()
def update(self):
pos = pygame.mouse.get_pos()
self.rect.x = pos[0]
class Bullet(pygame.sprite.Sprite):
def __init__(self):
bullets = pygame.image.load('missile.png')
bullets = pygame.transform.scale(bullets, (15,25))
super(Bullet, self).__init__()
self.image = bullets
self.rect = self.image.get_rect()
def update(self):
self.rect.y -= 1.25
all_sprites_list = pygame.sprite.Group()
block_list = pygame.sprite.Group()
bullet_list = pygame.sprite.Group()
for i in range(10):
block = Block(Block)
block.rect.x = (40 * i) + 200
block.rect.y = 50
block_list.add(block)
all_sprites_list.add(block)
for i in range(10):
block = Block(Block)
block.rect.x = (40 * i) + 200
block.rect.y = 75
block_list.add(block)
all_sprites_list.add(block)
for i in range(10):
block = Block(Block)
block.rect.x = (40 * i) + 200
block.rect.y = 100
block_list.add(block)
all_sprites_list.add(block)
for i in range(10):
block = Block(Block)
block.rect.x = (40 * i) + 200
block.rect.y = 125
block_list.add(block)
all_sprites_list.add(block)
player = Player()
all_sprites_list.add(player)
done = False
clock = pygame.time.Clock()
score = 0
time = 3000
player.rect.y = 615
font = pygame.font.SysFont(None, 30)
while not done:
OpenScreen.fill(WHITE)
fonts = pygame.font.SysFont("impact", 55)
display = fonts.render('PRESS SPACE TO PLAY', True, (BLACK))
OpenScreen.blit(display, (200 , 200))
font1 = pygame.font.SysFont("impact", 25)
display1 = font.render("Press Escape to quit", True, (BLACK))
OpenScreen.blit(display1, (670,600))
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
pressed = pygame.key.get_pressed()
if pressed[pygame.K_ESCAPE]:
done = True
elif pressed[pygame.K_SPACE]:
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
elif event.type == pygame.MOUSEBUTTONDOWN:
bullet = Bullet()
bullet.rect.x = player.rect.x + 3.5
bullet.rect.y = player.rect.y
all_sprites_list.add(bullet)
bullet_list.add(bullet)
all_sprites_list.update()
for bullet in bullet_list:
block_hit_list = pygame.sprite.spritecollide(bullet, block_list, True)
for block in block_hit_list:
bullet_list.remove(bullet)
all_sprites_list.remove(bullet)
score += 1
if bullet.rect.y < -10:
bullet_list.remove(bullet)
all_sprites_list.remove(bullet)
screen.fill(NAVYBLUE)
scoredisplay = font.render("Score {0}".format(score), 1, (WHITE))
screen.blit(scoredisplay, (5, 10))
all_sprites_list.draw(screen)
timedisplay = font.render("Time {0}".format(time), 1, (WHITE))
screen.blit(timedisplay, (5, 30))
pygame.display.flip()
time -= 1
if time == 0:
done = True
screen.fill(WHITE)
font= pygame.font.SysFont("impact", 36)
display = font.render("YOU RAN OUT OF TIME!! :(Your final score was {}".format(score), 1, (BLACK))
screen.blit(display, (100,200))
pygame.display.flip()
pygame.time.wait(1500)
if len(block_list) == 0:
done == True
len(bullet_list) == 0
screen.fill(WHITE)
time = 0
font = pygame.font.SysFont("impact", 55)
display = font.render('You Won!',True ,(BLACK))
display1 = font.render('Press SPACE for Level 2',True ,(BLACK))
display2 = font.render('Escape to quit',True ,(BLACK))
screen.blit(display,(350,200))
screen.blit(display1,(350,400))
screen.blit(display2,(500,500))
clock.tick(60)
pygame.display.flip()
pygame.time.wait(1500)
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
pressed = pygame.key.get_pressed()
if pressed[pygame.K_ESCAPE]:
done = True
elif pressed[pygame.K_SPACE]:
done = False
subprocess.call("LEVEL2.py", shell=True)
pygame.quit()
ist hier Ebene 2:
import pygame, random, sys
from time import sleep
from pygame.locals import *
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
NAVYBLUE = (0,0,45)
GREY = (128,128,128)
screen_width = 900
screen_height = 650
pygame.init()
OpenScreen = pygame.display.set_mode([screen_width, screen_height])
screen = pygame.display.set_mode([screen_width, screen_height])
class Block(pygame.sprite.Sprite):
def __init__(self, image):
aliens = pygame.image.load('aliens.png')
aliens = pygame.transform.scale(aliens, (20,20))
super(Block, self).__init__()
self.image = aliens
self.rect = self.image.get_rect()
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.mouse.set_visible(0)
ship = pygame.image.load('spaceship.png')
ship = pygame.transform.scale(ship, (20,30))
super(Player, self).__init__()
self.image = ship
self.rect = self.image.get_rect()
def update(self):
pos = pygame.mouse.get_pos()
self.rect.x = pos[0]
class Bullet(pygame.sprite.Sprite):
def __init__(self):
bullets = pygame.image.load('missile.png')
bullets = pygame.transform.scale(bullets, (15,25))
super(Bullet, self).__init__()
self.image = bullets
self.rect = self.image.get_rect()
def update(self):
self.rect.y -= 3
all_sprites_list = pygame.sprite.Group()
block_list = pygame.sprite.Group()
bullet_list = pygame.sprite.Group()
for i in range(17):
block = Block(Block)
block.rect.x = (40 * i) + 110
block.rect.y = 50
block_list.add(block)
all_sprites_list.add(block)
for i in range(17):
block = Block(Block)
block.rect.x = (40 * i) + 110
block.rect.y = 75
block_list.add(block)
all_sprites_list.add(block)
for i in range(17):
block = Block(Block)
block.rect.x = (40 * i) + 110
block.rect.y = 100
block_list.add(block)
all_sprites_list.add(block)
for i in range(17):
block = Block(Block)
block.rect.x = (40 * i) + 110
block.rect.y = 125
block_list.add(block)
all_sprites_list.add(block)
player = Player()
all_sprites_list.add(player)
done = False
clock = pygame.time.Clock()
score = 0
time = 2000
player.rect.y = 615
font = pygame.font.SysFont(None, 30)
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
pressed = pygame.key.get_pressed()
if pressed[pygame.K_ESCAPE]:
done = True
elif pressed[pygame.K_SPACE]:
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
elif event.type == pygame.MOUSEBUTTONDOWN:
bullet = Bullet()
bullet.rect.x = player.rect.x + 3.5
bullet.rect.y = player.rect.y
all_sprites_list.add(bullet)
bullet_list.add(bullet)
all_sprites_list.update()
for bullet in bullet_list:
block_hit_list = pygame.sprite.spritecollide(bullet, block_list, True)
for block in block_hit_list:
bullet_list.remove(bullet)
all_sprites_list.remove(bullet)
score += 1
if bullet.rect.y < -10:
bullet_list.remove(bullet)
all_sprites_list.remove(bullet)
screen.fill(NAVYBLUE)
scoredisplay = font.render("Score {0}".format(score), 1, (WHITE))
screen.blit(scoredisplay, (5, 10))
all_sprites_list.draw(screen)
timedisplay = font.render("Time {0}".format(time), 1, (WHITE))
screen.blit(timedisplay, (5, 30))
pygame.display.flip()
time -= 1
if time == 0:
done = True
screen.fill(WHITE)
font= pygame.font.SysFont("impact", 36)
display = font.render("YOU RAN OUT OF TIME!! :(Your final score was {}".format(score), 1, (BLACK))
screen.blit(display, (100,200))
pygame.display.flip()
pygame.time.wait(1500)
if len(block_list) == 0:
done == True
screen.fill(WHITE)
font = pygame.font.SysFont("impact", 55)
display = font.render('You Won!',True ,(BLACK))
screen.blit(display,(350,200))
pygame.display.flip()
pygame.time.wait(1500)
clock.tick(60)
pygame.quit()
Anstelle von 2 Modulen zum Kopieren und Einfügen empfiehlt es sich, den Spielcode an die übergebenen Variablen, Anzahl der Schiffe, Linien, Geschwindigkeit und Ebenennummer anzupassen und denselben Spielecode mit anderen Parametern wiederzuverwenden – gbtimmon
I versuchte das, war aber nicht sicher, wie genau man verschiedene Werte aufrufen soll, zum Beispiel die for-Schleife, die eine Reichweite (Anzahl von Aliens) hat, ich weiß nicht, wie man sie nennen soll und mit einer anderen Menge von Werten – user108
Warum nicht a verwenden Variable wie level = 1, und habe eine if-Anweisung, die abhängig von dieser Variablen entweder die Ebene 1 oder die Ebene 2 ausführt? – numbermaniac