Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pygame级别/菜单创建_Python_Pygame - Fatal编程技术网

Python Pygame级别/菜单创建

Python Pygame级别/菜单创建,python,pygame,Python,Pygame,我已经用python创建了一个简单的空间入侵者游戏,但是,我想创建一个菜单和更多的关卡,但我不知道如何去做。有人能告诉我如何创建菜单级别和其他附加级别吗 from pygame import * import random init() screen = display.set_mode((640, 480)) key.set_repeat(1, 1) display.set_caption("Py-Invaders") background = image.load("data/backgr

我已经用python创建了一个简单的空间入侵者游戏,但是,我想创建一个菜单和更多的关卡,但我不知道如何去做。有人能告诉我如何创建菜单级别和其他附加级别吗

from pygame import *
import random

init()
screen = display.set_mode((640, 480))
key.set_repeat(1, 1)
display.set_caption("Py-Invaders")
background = image.load("data/background.bmp")

class Sprite:
    def __init__ (self, xposition, yposition, filename):
        self.x = xposition
        self.y = yposition
        self.bitmap = image.load(filename)
        self.bitmap.set_colorkey((0, 0, 0))
    def set_position (self, xposition, yposition):
        self.x = xposition
        self.y = yposition
    def render (self):
        screen.blit(self.bitmap, (self.x, self.y))
    def setImage (self, filename):
        self.bitmap = image.load(filename)
    def removeColor (self, colorkey):
        self.bitmap.set_colorkey(colorkey)

def Intersect(x1, y1, x2, y2):
    if (x1 > x2 - 32) and (x1 < x2 + 32) and (y1 > y2 - 32) and (y1 < y2 + 32):
        return (1)
    else:
        return (0)
def rocketIntersect(x1, y1, x2, y2):
    if (x1 > x2 - 32) and (x1 < x2 + 143) and (y1 > y2 - 32) and (y1 < y2 + 143):
        return (1)
    else:
        return (0)

#Creating invaders1
invaders = []

x = 0
for i in range (10):
    invaders.append(Sprite(50 * x + 50, 50, "data/invader.bmp"))
    x += 1

#Creating invaders2
invaders2 = []

y = 0
for i in range (10):
    invaders2.append(Sprite(50 * y + 50, 100, "data/invader.bmp"))
    y += 1

ship = Sprite(20, 400, "data/ship/shipup.bmp")
shiplaser = Sprite(0, 480, "data/lasers/shiplaser.bmp")
shiprocket = Sprite(0, 480, "data/shiprocket.bmp")
invaderlaser = Sprite(0, 480, "data/lasers/invaderlaser.bmp")
invaderlaser2 = Sprite(0, 480, "data/lasers/invaderlaser.bmp")

quit = 0
invaderspeed = 3
invaderspeed2 = 3

while quit == 0: #Main game while loop
    screen.blit(background, (0, 0))

#Moving the invaders
    for i in range(len(invaders)):
        invaders[i].x += + invaderspeed
        invaders[i].render()

    if invaders[len(invaders)-1].x > 590:
        invaderspeed = -3
        for i in range(len(invaders)):
            invaders[i].y += 5

    if invaders[0].x < 10:
        invaderspeed = 3
        for i in range(len(invaders)):
            invaders[i].y += 5

#Moving the invaders2
    for i in range(len(invaders2)):
        invaders2[i].x += + invaderspeed2
        invaders2[i].render()

    if invaders2[len(invaders2)-1].x > 590:
        invaderspeed2 = -3
        for i in range(len(invaders2)):
            invaders2[i].y += 5

    if invaders2[0].x < 10:
        invaderspeed2 = 3
        for i in range(len(invaders2)):
            invaders2[i].y += 5

#Moving the ship laser
    if shiplaser.y < 479 and shiplaser.y > 0:
        shiplaser.render()
        shiplaser.y -= 5

#Moving the ship rocket
    if shiprocket.y < 479 and shiprocket.y > -150:
        shiprocket.render()
        shiprocket.y -= 5

#Moving the invaders laser
    if invaderlaser.y >= 480 and len(invaders) > 0:
        invaderlaser.x = invaders[random.randint(0, len(invaders) - 1)].x
        invaderlaser.y = invaders[0].y

#Moving the invaders2 laser
    if invaderlaser2.y >= 480 and len(invaders2) > 0:
        invaderlaser2.x = invaders2[random.randint(0, len(invaders2) - 1)].x
        invaderlaser2.y = invaders2[0].y

#Ship collisions with invaders laser
    if Intersect(ship.x, ship.y, invaderlaser.x, invaderlaser.y):
        quit = 1

#Ship collisions with invaders2 laser
    if Intersect(ship.x, ship.y, invaderlaser2.x, invaderlaser2.y):
        quit = 1

#Invaders collision with ship laser
    for i in range(0, len(invaders)):
        if Intersect(shiplaser.x, shiplaser.y, invaders[i].x, invaders[i].y):
            del invaders[i]
            shiplaser.x  = -1
            shiplaser.y = -1
            break

#Invaders2 collision with ship laser
    for i in range(0, len(invaders2)):
        if Intersect(shiplaser.x, shiplaser.y, invaders2[i].x, invaders2[i].y):
            del invaders2[i]
            shiplaser.x = -1
            shiplaser.y = -1
            break

#Invaders collision with ship rocket
    for i in range(0, len(invaders)):
        if Intersect(shiprocket.x, shiprocket.y, invaders[i].x, invaders[i].y):
            del invaders[i]
            break

#Invaders2 collision with ship rocket
    for i in range(0, len(invaders2)):
        if Intersect(shiprocket.x, shiprocket.y, invaders2[i].x, invaders2[i].y):
            del invaders2[i]
            break

    if len(invaders) and len(invaders2) == 0:
        quit = 1

    for ourevent in event.get():
        if ourevent.type == QUIT:
            quit = 1
        if ourevent.type == KEYDOWN:
            if ourevent.key == K_RIGHT and ship.x < 590:
                ship.x += 5
                ship.setImage("data/ship/shipright.bmp")
                ship.removeColor((0, 0, 0))

            if ourevent.key == K_LEFT and ship.x > 10:
                ship.x -= 5
                ship.setImage("data/ship/shipleft.bmp")
                ship.removeColor((0, 0, 0))

            if ourevent.key == K_UP and ship.y > 10:
                ship.y -= 5
                ship.setImage("data/ship/shipup.bmp")
                ship.removeColor((0, 0, 0))

            if ourevent.key == K_DOWN and ship.y < 450:
                ship.y += 5
                ship.setImage("data/ship/shipdown.bmp")
                ship.removeColor((0, 0, 0))

            if ourevent.key == K_SPACE:
                shiplaser.x = ship.x
                shiplaser.y = ship.y

            if ourevent.key == K_z:
                shiprocket.x = ship.x
                shiprocket.y = ship.y

            if ourevent.key == K_p:
                time.delay(10000)

    invaderlaser.render()
    invaderlaser.y += 5

    invaderlaser2.render()
    invaderlaser2.y += 5

    ship.render()

    display.update()
    time.delay(5)
从pygame导入*
随机输入
init()
屏幕=显示。设置_模式((640480))
键。设置_重复(1,1)
显示。设置标题(“Py入侵者”)
background=image.load(“data/background.bmp”)
类精灵:
def uuu init uuuu(self、xposition、yposition、filename):
self.x=xposition
self.y=y位置
self.bitmap=image.load(文件名)
self.bitmap.set_colorkey((0,0,0))
def设置位置(自身、X位置、Y位置):
self.x=xposition
self.y=y位置
def渲染(自):
blit(self.bitmap,(self.x,self.y))
def setImage(自身,文件名):
self.bitmap=image.load(文件名)
def removeColor(自身,颜色键):
self.bitmap.set_colorkey(colorkey)
def相交(x1、y1、x2、y2):
如果(x1>x2-32)和(x1y2-32)和(y1x2-32)和(x1y2-32)和(y1590:
入侵者速度=-3
对于射程内的i(len(入侵者)):
入侵者[i].y+=5
如果入侵者[0].x<10:
入侵者速度=3
对于射程内的i(len(入侵者)):
入侵者[i].y+=5
#移动入侵者2
对于范围内的i(len(入侵者2)):
入侵者2[i].x+=+入侵者速度2
入侵者2[i].render()
如果入侵者2[len(入侵者2)-1].x>590:
入侵者速度2=-3
对于范围内的i(len(入侵者2)):
入侵者2[i].y+=5
如果入侵者2[0].x<10:
入侵者速度2=3
对于范围内的i(len(入侵者2)):
入侵者2[i].y+=5
#用激光移动舰船
如果shiplaser.y<479且shiplaser.y>0:
shiplaser.render()
shiplaser.y-=5
#移动飞船火箭
如果shiprocket.y<479和shiprocket.y>-150:
shiprocket.render()
shiprocket.y-=5
#移动入侵者激光
如果入侵者LASER.y>=480且len(入侵者)>0:
investrLaser.x=入侵者[random.randint(0,len(入侵者)-1)].x
入侵者laser.y=入侵者[0]。y
#移动入侵者2激光器
如果INVISERLASER2.y>=480且len(INVISERS2)>0:
investrLaser2.x=investrs2[random.randint(0,len(investrs2)-1)].x
INVASTRLASER2.y=INVASTRS2[0].y
#激光与入侵者的碰撞
如果相交(ship.x,ship.y,investrLaser.x,investrLaser.y):
退出=1
#入侵者2激光与船舶碰撞
如果相交(ship.x、ship.y、investrLaser2.x、investrLaser2.y):
退出=1
#入侵者与舰船激光相撞
对于范围内的i(0,len(入侵者)):
如果相交(shiplaser.x,shiplaser.y,入侵者[i].x,入侵者[i].y):
德尔侵略者[i]
shiplaser.x=-1
shiplaser.y=-1
打破
#入侵者2号与舰船激光相撞
对于范围(0,len(入侵者2))中的i:
如果相交(shiplaser.x,shiplaser.y,investrs2[i].x,investrs2[i].y):
del Investers2[i]
shiplaser.x=-1
shiplaser.y=-1
打破
#入侵者与船用火箭相撞
对于范围内的i(0,len(入侵者)):
如果相交(shiprocket.x,shiprocket.y,入侵者[i].x,入侵者[i].y):
德尔侵略者[i]
打破
#入侵者2号与船用火箭相撞
对于范围(0,len(入侵者2))中的i:
如果相交(shiprocket.x,shiprocket.y,InvestrS2[i].x,InvestrS2[i].y):
del Investers2[i]
打破
如果len(入侵者)和len(入侵者2)==0:
退出=1
对于event.get()中的ourevent:
如果ourevent.type==退出:
退出=1
如果ourevent.type==KEYDOWN:
如果ourevent.key==K_RIGHT且ship.x<590:
船舶x+=5
ship.setImage(“data/ship/shipright.bmp”)
船舶移除颜色((0,0,0))
如果ourevent.key==K_LEFT且ship.x>10:
船舶x-=5
ship.setImage(“data/ship/shipleft.bmp”)
船舶移除颜色((0,0,0))
如果ourevent.key==K_UP且ship.y>10:
船舶y-=5
ship.setImage(“data/ship/shipp.bmp”)
船舶移除颜色((0,0,0))
如果ourevent.key==K_向下,并且ship.y<450:
船舶y+=5
ship.setImage(“data/ship/shippdown.bmp”)
船舶移除颜色((0,0,0))
如果ourevent.key==K_空格:
shiplaser.x=ship.x
shiplaser.y=ship.y
如果ourevent.key==K_z:
shiprocket.x=ship.x
shiprocket.y=ship.y
如果ourevent.key==K\u p:
时间延迟(10000)
inventerLaser.render()文件
入侵者激光器y+=5
InvestrLaser2.render()文件
入侵者激光器2.y+=5
ship.render()
display.update()
时间延迟(5)
Rea