python写飞机大战游戏,python编的游戏
通过对边肖的观察,每个人似乎都对划船和钓鱼情有独钟。因此,本文为大家带来了一个用Python编写的简单版星球大战游戏。有兴趣的朋友可以试试。
00-1010前言1。游戏画面2。游戏结束画面3。游戏素材4。游戏代码5。核心代码1。导入模块2。动态星空背景功能3。不时生成的敌机功能4。飞碟运动5。子弹移动6。玩家拍摄功能7。播放背景音乐和产生音效8。新屏幕9。移动邮票实现星星10。哭脸11。11号玩家。
目录
根据最近对辣条的观察,大家似乎都对划水钓鱼情有独钟。于是我重操旧业,写了这么一个简单版的星球大战。
当然,辣条的初衷绝对不是让你浑水摸鱼。我真的希望你能从他们身上学到一点东西。总之,希望你在Python里能少踩坑,因为昨天有人跟学长说,通过增删查,你以后会拿高薪。我不相信现在是这样的。
就像问懂事的哥哥姐姐们,你们觉得可能吗?
前言
一.游戏画面
二.游戏结束画面
三.游戏素材
飞碟大战. py
因为配音需要调音台,所以这里用的是pygame的调音台。
四.游戏代码
五、核心代码
从精灵导入*
导入pygame.mixer
1.导入模块
def star_move():
动态启动背景功能
对于stars:中的明星
star.move(0,-20)
if star.ycor() -height//2:
x=random.randint(-width//2,width//2)
y=random.randint(10 height//2,height*2)
star.reborn(x,y,0,-20)
2.动态星空背景函数
def spawn_enemy():
不时产生敌机功能
if random.randint(1,10)==1,len(enemy)10:
x=random.randint(-200,200)
y=random.randint(100,300)
enemy=Sprite(shape= RES/UFO . png ,visible=False,pos=(x,y),tag=enemy )
敌人。_rotatemode=1
敌人.规模(0.5)
enemy . set heading(random . randint(1,360))
enemy.show()
3.不定时产生敌机函数
def enemymove():
“飞碟的运动”
对于敌人:中的e
英国食品与药品管理局(3)
#设置某台机器
率让ufo朝向player
if random.randint(10,100) == 10 and \
abs(e.xcor())<200 and abs(e.ycor()<250):
e.heading(player)
e.bounce_on_edge()
5.子弹的移动
def bulletmove():"""子弹的移动"""
for b in list(bullets):
b.move(0,10)
if b.collide_edge():b.remove()
6.玩家射击函数
def player_shoot():"""玩家射击函数"""
if player.alive == False : return
if m1.down() and framecounter % 5 == 0 :
b = Sprite(shape=circle,visible=False,tag=bullet)
b.scale(0.5)
b.color(yellow)
b.goto(player.pos()) # 移到player坐标
b.show() # 显示子弹
shoot.play() # 播放射击声
7.播放背景音乐与生成声效对象
# 播放背景音乐与生成声效对象pygame.mixer.init()
pygame.mixer.music.load(audio/FrozenJam.ogg)
pygame.mixer.music.play(-1,0)
explosion = pygame.mixer.Sound(audio/expl3.wav)
shoot = pygame.mixer.Sound(audio/pew.wav)
8.新建屏幕
width,height = 480,640screen = Screen() # 新建屏幕
screen.bgcolor(black) # 屏幕背景色为黑
screen.setup(width,height)
screen.title("星空飞碟大战by大海老师")
screen.addshape(res/fighter.png)
screen.addshape(res/ufo.png)
frames = [res/explosion0.png,res/explosion1.png]
[screen.addshape(frame) for frame in frames]
9.移动图章实现星星
# 星星,用来做向下滚动背景,星星的移动也可以通过移动图章实现# 这样可以有更多的星星。如果用克隆的话有数量限制,根据计算机配置不同而不同。
star = Sprite(shape=circle)
star.color(white)
star.scale(0.1)
stars = [star]
stars.extend([star.clone() for _ in range(20)])
for star in stars:
x = random.randint(-width//2,width//2)
y = random.randint(10+height//2,height*2)
star.goto(x,y)
10.哭脸
cry = Sprite(shape=cry.png,visible=False,pos=(0,100))
11.玩家
player = Sprite(shape=res/fighter.png,pos=(0,-200))player.scale(0.65)
player.alive = True # 表示player是活的
m1 = Mouse() # 鼠标左键检测实例
clock = Clock() # 实钟对象,用来控制fps
framecounter = 0
counter = 0 # 统计击中的ufo数量
bullets = Group(bullet) # 子弹组
enemys = Group(enemy) # ufo敌人组
12.飞碟移动与子弹移动
while counter<100:framecounter += 1 # 帧计数器
spawn_enemy() # 不定时产生敌机UFO
player_shoot() # 单击鼠标左键,射击子弹
enemymove() # 飞碟们的移动
bulletmove() # 子弹的移动
if player.alive:
player.goto(mousepos())
else:
cry.show() # 显示哭脸,表示失败
star_move() # 星空滚动背景
13.敌机的碰撞检测
for e in list(enemys): # 对每架敌机进行碰撞检测if e.collide(player,scale=0.6):
explode(e.position(),frames)
e.remove()
explode(player.pos(),frames)
player.remove()
player.alive = False
explosion.play() # 爆炸声
break
# 敌机是否碰到任意一颗子弹
for b in list(bullets):
if b.collide(e,scale=0.6): # 如果子弹碰到UFO
explode(e.position(),frames)
e.remove()
b.remove()
explosion.play() # 爆炸声
counter +=1 # 进行统计
break
screen.title(星空飞碟大战,当前击毙: + str(counter) + " 架UFO")
clock.tick(60)
14.闯关成功把子弹删除
[b.remove() for b in list(bullets)] # 闯关成功把子弹删除for e in list(enemys): # 每架飞碟都爆炸
explode(e.position(),frames)
e.remove()
clock.tick(10)
t = Turtle(visible=False)
t.color(yellow)
t.write(成功闯关!,align=center,font=(黑体,32,normal))
while True:
player.goto(mousepos())
star_move() # 星空滚动背景
clock.tick(60)
六、总结
看到这里的都是妥妥的铁粉无疑了,既然是铁粉那就给你们一次亲密接触机会,底下是我的个人ming片找到我的可是有大把源码,学习路线啥的,多的我就不透露,看大家自己的积极性了啊~
其次呢再次重申辣条我真的不是想让你们摸鱼的,虽然说是个很简单的东西,但是对于初学者,或者基础不扎实的弟弟妹妹们而言估计也很难实现出来的,所以最后大家加油吧~
以上就是利用Python写个简易版星空大战游戏的详细内容,更多关于Python星空大战的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。