2021年5月16日python写的小游戏(7)——勇闯一百层,键盘控制,求绝对值

常见表示按键的代码:

keyboard.up  		按下键盘上键
keyboard.down		按下键盘下键
keyboard.a			按下键盘a键
keyboard.space		按下键盘空格键
keyboard.k_0		按下键盘数字0键
keyboard.kp1		按下键盘小键盘1键
keyboard.rshift		按下键盘右边的shift键
import pgzrun
import random
TITLE='勇闯一百层'
WIDTH=600#设置窗口大小
HEIGHT=800
playSpeed = 5#角色平移速度

brickSpeed=2
isLoose = False
score = 0

bricks=[]#创建多个砖块列表
for i in range(5):
    brick = Actor('brick')
    brick.pos =100*(i+1),150*(i+1)
    bricks.append(brick)

alien = Actor('alien')  # 导入角色,设置角色坐标
alien.x = WIDTH/2
alien.y=HEIGHT/5
lastAlienY=alien.y#记录上一帧的y坐标

#绘制模块,绘制角色,绘制砖块
def draw():
    screen.clear()
    alien.draw()#绘制角色
    for brick in bricks:
        brick.draw()#砖块
    screen.draw.text("你已经坚持了"+str(score)+'层数',(300,20),fontsize=25,fontname='s',color='white')
    if isLoose:#游戏失败输出相关信息
        screen.draw.text("游戏失败", (80, HEIGHT/2-100), fontsize=100,fontname='s',color='red')


#更新模块,左右移动,角色在砖上才可以移动
def update():#如果顶层接触,并且在砖块的一定范围内,不下降
    #坐标右边的大,所以是砖块左端减去alien左端,alien右端减去砖块右端
    #判断角色是否在砖块上
    global isLoose,brickSpeed,playSpeed,lastAlienY,score
    isPlayOnGround = False  # 假设没有在砖块上
    for brick in bricks:
        if abs(alien.bottom-brick.top) < 5 and brick.left-alien.left<alien.width*2/3 \
                and alien.right-brick.right < alien.width*2/3:#在砖块上,可以左右移动,纵坐标与砖块相同
            alien.image='alien'
            isPlayOnGround =True#在砖块上
            alien.bottom=brick.top#跟随移动

            if lastAlienY<alien.y:
                score+=1

            if keyboard.left:
                alien.x = alien.x-playSpeed
                if alien.x<40:
                    alien.x=40
            if keyboard.right:
                alien.x = alien.x+playSpeed
                if alien.x > 560:
                    alien.x = 560
            lastAlienY = alien.y
    if not isPlayOnGround:  # 不在砖上,下落
        alien.image='alien_falling'
        alien.y += 5
    
    #一个砖块消失,出现一个砖块
    if bricks[0].top<10:
        del bricks[0]#删去一个0位置
        brick=Actor('brick')
        brick.x=random.randint(-50,550)#第一次绘制的五个与列表无关,这里要重新绘制
        brick.y=HEIGHT
        bricks.append(brick)#添加到列表中,这就没有什么次序要求了,删一个增加一个
        
    for brick in bricks:
        brick.y-=brickSpeed

    if alien.top < 0 or alien.bottom > HEIGHT:#角色超出范围
        brickSpeed = 0  # 速度归零
        playerSpeed = 0
        isLoose =True   

pgzrun.go()

你可能感兴趣的:(python写的简单小游戏)