import random
import codeaha
stage = codeaha.Environment()
stage.set_background("planegame2") #设置背景
hero = codeaha.Sprite("heroplane1",0,-210) #英雄飞机的位置
score = 0 #显示分数
live=3 #生命值
time = 0 #定时器
TextScore = codeaha.Text("Score: " + str(score), -200,210, "white") #分数文本
TextLive = codeaha.Text("Live: "+str(live),180,210,"white") #生命值文本
#键盘移动
def right_key():
if hero.xcor()+hero.get_width()/2+20>250:
hero.set_right(250)
else:
hero.move_right(50)
stage.event_key("d", right_key)
def left_key():
if hero.xcor()-hero.get_width()/2-20<-250:
hero.set_left(-250)
else:
hero.move_left(50)
stage.event_key("a", left_key)
#碰撞事件
def collision(sprite, hit_sprite):
global score
global live
#如果碰到了子弹
if hit_sprite.get_image_name() == "bullet1":
stage.remove_sprite(sprite) # 移除敌机
enemyend=codeaha.Sprite('enemyend1',sprite.xcor(),sprite.ycor()) # 死亡特效
stage.wait(0.1)
stage.remove_sprite(enemyend) # 移除死亡特效
stage.remove_sprite(hit_sprite) # 移除子弹
score+=1
TextScore.set_text("Score: " + str(score)) # 显示分数
# 如果碰到了英雄飞机
if hit_sprite.get_image_name()== "heroplane1":
stage.remove_sprite(sprite) # 移除敌机
boom=codeaha.Sprite('aircraftend',sprite.xcor(),sprite.ycor()) # 爆炸特效
stage.wait(0.1)
stage.remove_sprite(boom) # 移除爆炸特效
live-=1
TextLive.set_text("Live: "+str(live)) # 显示生命值
#间歇事件
def interval():
global time
global live
# 游戏结束
if live<=0:
hero.load_image('aircraftend')
stage.wait(0.1)
stage.remove_sprite(hero)
GameOver = codeaha.Text("Game Over!", 0,0, "red")
GameOver.set_size(2)
if live>0:
time +=1
if time % 9 == 0 :
bullet= codeaha.Sprite("bullet1", hero.xcor(),hero.ycor()+hero.get_height()/2+10)
bullet.move_up(1000)
stage.remove_sprite(bullet)
if time % 30 == 0 :
enemy = codeaha.Sprite("enemyplane1",random.randint(-220,220),270)
enemy.event_collision(collision)
enemy.move_down(500)
stage.remove_sprite(enemy)
stage.event_interval(interval, 0.015)