python游戏
python小游戏 太空人入侵步骤如下创建背景创建玩家玩家动起来创建敌人敌人动起来创建,发射子弹添加分数判定游戏结束载入音乐一个简单的小游戏效果:代码如下:import turtleimport randomimport simpleaudio as sa#载入音乐laser = sa.WaveObject.from_wave_file('./img/laser.wav')exp = sa.Wav
·
python小游戏 太空人入侵
步骤如下
- 创建背景
- 创建玩家 玩家动起来
- 创建敌人 敌人动起来
- 创建,发射子弹
- 添加分数
- 判定游戏结束
- 载入音乐
一个简单的小游戏,没有用太多的库
效果:
代码如下:
import turtle
import random
import simpleaudio as sa
#载入音乐
laser = sa.WaveObject.from_wave_file('./img/laser.wav')
exp = sa.WaveObject.from_wave_file('./img/explosion.wav')
# 设置背景
game = turtle.Screen()
game.setup(700,700)
game.title('太空人入侵')
game.bgpic('./img/bg.gif')
# 创建玩家
turtle.addshape('./img/player.gif')
player = turtle.Turtle()
player.ht()
player.speed(0)
player.up()
player.shape('./img/player.gif')
player.setpos(0,-300)
player.st()
# 添加分数
score = 0
pen = turtle.Turtle()
pen.color('white')
pen.speed(0)
pen.up()
pen.ht()
pen.setpos(-340,230)
score_string ='分数:%s' %score
pen.write(score_string,align='left',font=('Arial',12,'normal'))
#每次移动
play_step =15
def go_left():
x= player.xcor()
x = x-play_step
if x < -300:
x = -300
player.setx(x)
def go_right():
x= player.xcor()
x = x+play_step
if x > 300:
x = 300
player.setx(x)
#监听
turtle.listen()
turtle.onkey(go_left,'Left')
turtle.onkey(go_right,'Right')
# 添加敌人
num = 6
inv_list = []
turtle.addshape('./img/inv.gif')
for i in range(6):
inv = turtle.Turtle()
inv_list.append(inv)
inv.ht()
inv.speed(0)
inv.up()
inv.shape('./img/inv.gif')
x = random.randint(-200,200)
y = random.randint(100,200)
inv.setpos(x,y)
inv.st()
# 创建子弹
bomd = turtle.Turtle()
bomd.ht()
bomd.speed(0)
bomd.up()
bomd.shape('triangle')
bomd.color('yellow')
bomd.shapesize(0.5,0.5)
bomd.seth(90)
# 发射子弹
is_fired = False
def fire():
global is_fired
if is_fired ==False:
bomd.setpos(player.xcor(),player.ycor()+20)
bomd.st()
is_fired = True
laser.play()
turtle.onkey(fire,'space')
# 敌人移动速度
inv_step = 2
# 敌人位置状态
go_banck = False
# 子弹速度
bomd_step = 10
# 游戏状态
game_over = False
# 循环内使敌人 子弹动起来
while True:
#判断游戏结束
if game_over:
pen2 = turtle.Turtle()
pen2.color('red')
pen.ht()
pen2.write('游戏结束',align='center',font=('Arial',18,'bold'))
break
# 敌人移动起来
for inv in inv_list:
x = inv.xcor()
x += inv_step
inv.setx(x)
#敌人左右摇摆
if x > 300 or x <-300:
go_banck = True
# 击中敌人后执行的操作
# 敌人复位
if inv.distance(bomd) < 15:
inv.setpos(0,240)
is_fired = False
bomd.setpos(-350,-350)
bomd.ht()
# 计分
score +=10
score_string = '分数:%s' % score
pen.clear()
pen.write(score_string, align='left', font=('Arial', 12, 'normal'))
exp.play()
# 满足改条件 游戏结束
if inv.ycor() < -280:
game_over = True
# 敌人来回移动 到达边界下降40
if go_banck:
inv_step *= -1
go_banck = False
for inv in inv_list:
y = inv.ycor()
y -=40
inv.sety(y)
#发射子弹
if is_fired:
y = bomd.ycor()
y+= bomd_step
bomd.sety(y)
# 子弹到达边界消失
if y > 250:
is_fired = False
bomd.setpos(-350,-350)
bomd.ht()
turtle.done()
代码参考视频,B站麦叔编程 需要图片或者 声音资料的可以找我要 也可以去B站找麦叔
更多推荐
所有评论(0)