Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.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 我如何处理玩家的生活?_Python_Python 3.x_Pygame_Turtle Graphics - Fatal编程技术网

Python 我如何处理玩家的生活?

Python 我如何处理玩家的生活?,python,python-3.x,pygame,turtle-graphics,Python,Python 3.x,Pygame,Turtle Graphics,我试图给我的python游戏,一个玩家生活系统。我想要3条可以被消灭的生命,每次玩家死亡。3人死亡后,游戏结束 我最终想要一个“生命”,即用心来显示计数 我一直在尝试使用一个列表函数和一种类似于我用来评分的计算方法 import turtle import os import math import random import pygame import pickle import sys FPS = 60 ANIMATION_SPEED = 0.18 pygame.init() lase

我试图给我的python游戏,一个玩家生活系统。我想要3条可以被消灭的生命,每次玩家死亡。3人死亡后,游戏结束

我最终想要一个“生命”,即用心来显示计数

我一直在尝试使用一个列表函数和一种类似于我用来评分的计算方法

import turtle
import os
import math
import random
import pygame
import pickle
import sys

FPS = 60
ANIMATION_SPEED = 0.18

pygame.init()

lasersound = pygame.mixer.Sound("laser.wav")
explosion = pygame.mixer.Sound("explosion.wav")
bombesound = pygame.mixer.Sound("Bomb+2.wav")
pygame.mixer.music.load("laserattack.wav")
pygame.mixer.music.play(-1)

#Screen
window = turtle.Screen()
window.bgcolor("black")
window.bgpic("lights.gif")
window.title("Spaced Invaders")
window.setup(width = 800, height = 800)

#register shapesize
turtle.register_shape("alienship.gif")
turtle.register_shape("ship1.gif")
turtle.register_shape("laser.gif")
turtle.register_shape("bomb.gif")
turtle.register_shape("life.gif")

#border
border_pen = turtle.Turtle()
border_pen.speed(0)
border_pen.color("white")
border_pen.penup()
border_pen.setposition(-360,-360)
border_pen.pendown()
border_pen.pensize(3)
for side in range (4):
    border_pen.fd(720)
    border_pen.lt(90)
border_pen.hideturtle()

#score
score = 0
score_pen = turtle.Turtle()
score_pen.speed(0)
score_pen.color("white")
score_pen.penup()
score_pen.setposition(-375, 375)
scorestring = "Score: %s" %score
score_pen.write(scorestring, False, align="left", font=("Arial", 14, "normal"))
score_pen.hideturtle()

#life
number_of_lives = 3
lives= []

for i in range(number_of_lives):
    lives.append(turtle.Turtle())

    life_pen = turtle.Turtle()
    life_pen.speed(0)
    life_pen.color("white")
    life_pen.penup()
    life_pen.setposition(360, 380)
    lifestring = "Lives: %l" %lives
    life_pen.write(lifetring, False, align="left", font=("Arial", 14, "normal"))
    life_pen.hideturtle()

#player
player = turtle.Turtle()
player.color("blue")
player.shape("ship1.gif")
player.penup()
player.speed(0)
player.setposition(0, -250)
player.setheading(90)

playerspeed = 60

#move left or right
def move_left():
    x = player.xcor()
    x -= playerspeed
    if x < -340:
        x = -340
    player.setx(x)

def move_right():
    x = player.xcor()
    x += playerspeed`enter code here`
    if x > +340:
        x = +340
    player.setx(x)

#def collision
def iscollision(t1, t2):
    distance = math.sqrt(math.pow(t1.xcor()-t2.xcor(),2)+math.pow(t1.ycor()-t2.ycor(),2))
    if distance < 50:
        return True

#make invaders
number_of_invaders = 5
invaders = []
for i in range(number_of_invaders):
    invaders.append(turtle.Turtle())

for invader in invaders:
    invader.color("red")
    invader.shape("alienship.gif")
    invader.penup()
    invader.speed(0)
    x = random.randint(-300, 300)
    y = random.randint(100, 300)
    invader.setposition(x, y)

invaderspeed = 5

#bombspeed
bombstate = "ready"

#for invader in invaders:
bomb = turtle.Turtle()
bomb.color("red")
bomb.shape("bomb.gif")
bomb.penup()
bomb.speed(0)
bomb.setheading(-90)
bomb.shapesize(1, 1)
bomb.hideturtle()

def drop_bomb():
    global bombstate
    if bombstate == "ready":
        x = invader.xcor()
        y = invader.ycor() - 15
        bomb.setposition(x,y)
        bomb.showturtle()
        bombstate = "fire"
        bombesound.play()
bombspeed = 25
bombstate = "ready"

#players laser
laser = turtle.Turtle()
laser.color("red")
laser.shape("laser.gif")
laser.penup()
laser.speed(0)
laser.setheading(90)
laser.shapesize(2, 2)
laser.hideturtle()

laserspeed = 120

laserstate = "ready"

def fire_laser():
    global laserstate
    if laserstate == "ready":
        x = player.xcor()
        y = player.ycor() + 15
        laser.setposition(x,y)
        laser.showturtle()
        laserstate = "fire"
        lasersound.play()

#keyboard bindings

turtle.listen()
turtle.onkey(move_left, "a")
turtle.onkey(move_right, "d")

turtle.onkey(move_left, "Left")
turtle.onkey(move_right, "Right")

turtle.onkey(fire_laser, "space")

turtle.onkey(drop_bomb,  "1")

#game loop
while True:

#move invader
    for invader in invaders:
        x = invader.xcor()
        x += invaderspeed
        invader.setx(x)

        if invader.xcor() > 340:
            for e in invaders:
                y = e.ycor()
                y -= 40
                invaderspeed *= -1
                e.sety(y)
        if invader.xcor() < -340:
            for e in invaders:
                y = e.ycor()
                y -= 40
                invaderspeed *= -1
                e.sety(y)

#collision check
        if iscollision(laser, invader):
            laser.hideturtle()
            laserstate = "ready"
            laser.setposition(0,-400)
            x = random.randint(-300, 300)
            y = random.randint(100, 300)
            invader.setposition(x, y)
            explosion.play()

            #update score
            score += 10
            scorestring = "Score: %s" %score
            score_pen.clear()
            score_pen.write(scorestring, False, align="left", font=("Arial", 14, "normal"))

        if iscollision(player, invader):
            player.hideturtle()
            invader.hideturtle()
            explosion.play()
            game_overpen = turtle.Turtle()
            game_overpen.speed(0)
            game_overpen.color("white")
            game_overpen.penup()
            game_overpen.setposition(-100, 100)

     #update life
            life -= 1
            lifestring = "Lives: %l" %lives
            life_pen.clear()
            life_pen.write(lifestring, False, align="left", font=("Arial", 14, "normal"))


            print ("Game Over")

        if iscollision(bomb, player):
            player.hideturtle()
            bomb.hideturtle()
            explosion.play()
            game_overpen = turtle.Turtle()
            game_overpen.speed(0)
            game_overpen.color("white")
            game_overpen.penup()
            game_overpen.setposition(-100, 100)
            game_overpen.write("GAME OVER", False, align="left", font=("Arial", 30, "bold"))
            game_overpen.hideturtle()
            pygame.mixer.music.stop()
            print ("Game Over")

#move laser
    if laserstate == "fire":
        y = laser.ycor()
        y += laserspeed
        laser.sety(y)

    if laser.ycor( ) > 340:
        laser.hideturtle()
        laserstate = "ready"
#move bomb
    if bombstate == "fire":
        y = bomb.ycor()
        y -= bombspeed
        bomb.sety(y)

    if bomb.ycor( ) < -340:
        bomb.hideturtle()
        bombstate = "ready"

#if invader gets past you
    if invader.ycor() < -340:
        explosion.play()
        game_overpen = turtle.Turtle()
        game_overpen.speed(0)
        game_overpen.color("white")
        game_overpen.penup()
        game_overpen.setposition(-100, 100)
        game_overpen.write("GAME OVER", False, align="left", font=("Arial", 30, "bold"))
        game_overpen.hideturtle()
        pygame.mixer.music.stop()
        print ("Game Over")


delay = input("Press Enter To Finish")

The error I recieve:

Traceback (most recent call last):
File "test.py", line 70, in <module>
lifestring = "Lives: %L" %lives
#ValueError: incomplete format
导入海龟
导入操作系统
输入数学
随机输入
导入pygame
进口泡菜
导入系统
FPS=60
动画速度=0.18
pygame.init()
lasersound=pygame.mixer.Sound(“laser.wav”)
explosion=pygame.mixer.Sound(“explosion.wav”)
bombesound=pygame.mixer.Sound(“Bomb+2.wav”)
pygame.mixer.music.load(“laserattack.wav”)
pygame.mixer.music.play(-1)
#屏风
window=turtle.Screen()
window.bgcolor(“黑色”)
window.bgpic(“lights.gif”)
窗口标题(“间隔入侵者”)
窗口设置(宽度=800,高度=800)
#寄存器形状化
海龟。注册_形(“alienship.gif”)
海龟。注册_形(“ship1.gif”)
海龟。注册_形(“laser.gif”)
海龟。注册_形(“bomb.gif”)
海龟。注册_形(“life.gif”)
#边界
border\u pen=海龟。海龟()
边界笔速度(0)
边框颜色(“白色”)
border_pen.penup()
边界笔设置位置(-360,-360)
border_pen.pendown()
边境养老金(3)
对于范围内的侧面(4):
border_pen.fd(720)
边界_pen.lt(90)
边界_pen.hideturtle()
#得分
分数=0
score\u pen=turtle.turtle()
记分笔速度(0)
分数笔颜色(“白色”)
记分
计分笔设置位置(-375)
scorestring=“分数:%s”%Score
score_pen.write(scorestring,False,align=“left”,font=(“Arial”,14,“normal”))
记分簿
#生活
生命的数量=3
生命=[]
对于范围内的i(生命的数量):
lives.append(海龟.海龟())
生活=乌龟。乌龟()
生命笔速度(0)
生命之笔颜色(“白色”)
生命之笔
生命笔设置位置(360380)
lifestring=“生命:%l”%Lives
life_pen.write(lifetring,False,align=“left”,font=(“Arial”,14,“normal”))
生活的秘密
#玩家
玩家=乌龟。乌龟()
播放器颜色(“蓝色”)
player.shape(“ship1.gif”)
player.penup()
玩家速度(0)
玩家设置位置(0,-250)
玩家设置标题(90)
球员速度=60
#向左或向右移动
def向左移动()
x=player.xcor()
x-=玩家速度
如果x<-340:
x=-340
player.setx(x)
def向右移动()
x=player.xcor()
x+=playerspeed`在此处输入代码`
如果x>+340:
x=+340
player.setx(x)
#def碰撞
def聚合(t1、t2):
距离=math.sqrt(math.pow(t1.xcor()-t2.xcor(),2)+math.pow(t1.ycor()-t2.ycor(),2))
如果距离小于50:
返回真值
#入侵者
入侵者的数量=5
入侵者=[]
对于范围内的i(入侵者的数量):
入侵者.append(turtle.turtle())
对于入侵者中的入侵者:
入侵者颜色(“红色”)
invader.shape(“alienship.gif”)
入侵者
入侵者。速度(0)
x=random.randint(-300300)
y=random.randint(100300)
入侵者设定位置(x,y)
入侵者速度=5
#爆炸速度
bombstate=“就绪”
#对于入侵者中的入侵者:
炸弹=乌龟。乌龟()
炸弹颜色(“红色”)
bomb.shape(“bomb.gif”)
炸弹
炸弹,速度(0)
炸弹。设定航向(-90)
炸弹。形状大小(1,1)
炸弹藏身处
def投放炸弹():
全球爆炸状态
如果bombstate==“就绪”:
x=入侵者.xcor()
y=入侵者。ycor()-15
炸弹设置位置(x,y)
炸弹
bombstate=“火灾”
bombesound.play()
爆炸速度=25
bombstate=“就绪”
#激光播放器
激光=海龟。海龟()
激光颜色(“红色”)
laser.shape(“laser.gif”)
雷射
激光速度(0)
激光设定航向(90)
激光整形(2,2)
激光隐藏
激光速度=120
laserstate=“就绪”
def fire_激光器():
全球激光状态
如果laserstate==“就绪”:
x=player.xcor()
y=player.ycor()+15
激光设定位置(x,y)
laser.showturtle()
laserstate=“火灾”
lasersound.play()
#键盘绑定
乌龟,听着
乌龟。上键(向左移动“a”)
乌龟。上键(向右移动,“d”)
乌龟。上键(向左移动,“左”)
乌龟.安基(向右移动,“向右”)
乌龟。安基(火焰激光,“太空”)
乌龟.安基(投下炸弹,“1”)
#游戏循环
尽管如此:
#移动入侵者
对于入侵者中的入侵者:
x=入侵者.xcor()
x+=入侵者速度
入侵者setx(x)
如果入侵者.xcor()大于340:
对于入侵者中的e:
y=e.ycor()
y-=40
入侵者速度*=-1
e、 赛蒂(y)
如果入侵者.xcor()<-340:
对于入侵者中的e:
y=e.ycor()
y-=40
入侵者速度*=-1
e、 赛蒂(y)
#碰撞检查
如果发生碰撞(激光、入侵者):
激光隐藏
laserstate=“就绪”
激光器设置位置(0,-400)
x=random.randint(-300300)
y=random.randint(100300)
入侵者设定位置(x,y)
爆炸。播放()
#更新分数
分数+=10
scorestring=“分数:%s”%Score
记分笔清除()
score_pen.write(scorestring,False,align=“left”,font=(“Arial”,14,“normal”))
如果合并(玩家、入侵者):
player.hideturtle()
入侵者
爆炸。播放()
game_overpen=海龟。海龟()
游戏速度过快(0)
游戏颜色(“白色”)
游戏(overpen.penup)
游戏超过设定位置(-100100)
#更新寿命
寿命-=1
lifestring=“生命:%l”%Lives
生命之笔
life_pen.write(lifestring,False,align=“left”,font=(“Arial”,14,“normal”))
打印(“游戏结束”)
如果合并(炸弹、玩家):
player.hideturtle()
炸弹藏身处
爆炸。播放()
game_overpen=海龟。海龟()
游戏速度过快(0)
游戏颜色(“whi
lifestring = "Lives: %L" %lives
#ValueError: incomplete format