显示敌人:
定义显示敌人的函数 show_enemy,调用该函数时显示敌人的图像- # 引用pygame
- import pygame
- # 使程序初始化
- pygame.init()
- # 设置图像参数
- screen = pygame.display.set_mode((480, 700))
- # 设置标题
- pygame.display.set_caption('打飞机')
- # 引入图片
- icon = pygame.image.load('ufo.png')
- pygame.display.set_icon(icon)
- # 引入背景图片
- bgImg = pygame.image.load('background.png')
- # 引入玩家图片
- playerImg = pygame.image.load('player.png')
- # 定义玩家初始位置
- playerX = 225
- playerY = 350
- # 定义变量表示运动距离
- playerStep = 0
- # 新增 引入敌人图片
- enemyImg = pygame.image.load('enemy.png')
- # 新增 定义显示敌人的函数
- def show_enemy():
- # 新增 使敌人出现在(0,0)的位置
- screen.blit(enemyImg, (0, 0))
- running = True
- # 进行循环 游戏主循环
- while running:
- # 绘制背景
- screen.blit(bgImg, (0, 0))
- # 绘制玩家
- screen.blit(playerImg, (playerX, playerY))
- # 新增 调用显示敌人函数
- show_enemy()
- # 获取游戏事件队列中的所有事件(涉及到玩家的各种交互,如鼠标点击、键盘操作、窗口事件等)
- for event in pygame.event.get():
- # 如果事件是QUIT事件,如点击窗口的关闭按钮,则退出循环
- if event.type == pygame.QUIT:
- # 退出循环
- running = False
- # KEYDOWN判断键盘按下的类型
- if event.type == pygame.KEYDOWN:
- # 新增 判断按下向左右键进行移动赋值
- if event.key == pygame.K_RIGHT:
- playerStep = 0.5
- elif event.key == pygame.K_LEFT:
- playerStep = -0.5
- # KEYUP判断键盘抬起的类型
- if event.type == pygame.KEYUP:
- # 抬起键盘时将移动距离改为0
- playerStep = 0
- # 进行位移
- playerX += playerStep
- # 控制边界
- if playerX > 378:
- playerX = 378
- if playerX < 0:
- playerX = 0
- if playerY > 572:
- playerY = 572
- if playerY < 0:
- playerY = 0
- # 界面更新
- pygame.display.update()
复制代码 敌人移动:
1.敌人左右移动
设置敌人初始运动速度,当敌人移动到边界时在左右边界做反弹效果
注意:在函数中使用全局变量时,需要在函数中使用 global 语句标注使用的变量为全局变量- # 引用pygame
- import pygame
- # 使程序初始化
- pygame.init()
- # 设置图像参数
- screen =pygame.display.set_mode((480,700))
- # 设置标题
- pygame.display.set_caption('打飞机')
- # 引入图片
- icon=pygame.image.load('ufo.png')
- pygame.display.set_icon(icon)
- # 引入背景图片
- bgImg=pygame.image.load('background.png')
- # 引入玩家图片
- playerImg=pygame.image.load('player.png')
- # 定义玩家初始位置
- playerX=225
- playerY=350
- # 定义变量表示玩家运动速度
- playerStep=0
- # 引入敌人图片
- enemyImg=pygame.image.load('enemy.png')
- # 新增 定义敌人位置
- enemyX=225
- enemyY=20
- # 新增 引入敌人运动速度
- enemyStep=0.1
- # 定义显示敌人的函数
- def show_enemy():
- # 新增 标注为全局变量
- global enemyX
- global enemyY
- global enemyStep
- # 函数可以使敌人出现在(enemyX,enemyY)的位置
- screen.blit(enemyImg, (enemyX,enemyY))
- # 新增 敌人飞机运动测试
- enemyX += enemyStep
- # 新增 控制敌人边界当敌人碰到左右边界时反弹,当敌人运动到上下边界时停止
- if enemyX > 378:
- enemyStep*=-1
- if enemyX < 0:
- enemyStep*=-1
- if enemyY > 572:
- enemyY = 572
- if enemyY < 0:
- enemyY = 0
- running =True
- # 进行循环 游戏主循环
- while running :
- # 绘制背景
- screen.blit(bgImg,(0,0))
- # 绘制玩家
- screen.blit(playerImg, (playerX, playerY))
- # 调用显示敌人函数
- show_enemy()
- # 获取游戏事件队列中的所有事件(涉及到玩家的各种交互,如鼠标点击、键盘操作、窗口事件等)
- for event in pygame.event.get():
- # 如果事件是QUIT事件,如点击窗口的关闭按钮,则退出循环
- if event.type == pygame.QUIT:
- #退出循环
- running =False
- # KEYDOWN判断键盘按下的类型
- if event.type == pygame.KEYDOWN:
- # 判断按下向左右键进行移动赋值
- if event.key == pygame.K_RIGHT:
- playerStep=0.5
- elif event.key == pygame.K_LEFT:
- playerStep=-0.5
- # KEYUP判断键盘抬起的类型
- if event.type == pygame.KEYUP:
- # 抬起键盘时将移动距离改为0
- playerStep = 0
- # 进行位移
- playerX+=playerStep
- # 控制边界
- if playerX > 378:
- playerX = 378
- if playerX < 0:
- playerX = 0
- if playerY > 572:
- playerY = 572
- if playerY < 0:
- playerY = 0
- # 界面更新
- pygame.display.update()
复制代码 效果如下:
2.敌人下沉移动与随机出现
当敌人碰到左右边界时触发下沉移动
调用 random 函数生成敌人随机显示位置的坐标
注意:生成随机数时需要定义最大值和最小值。- # 引用 pygame
- import pygame
- # 新增 引用随机模块
- import random
- # 使程序初始化
- pygame.init()
- # 设置游戏窗口大小
- screen = pygame.display.set_mode((480, 700))
- # 设置标题
- pygame.display.set_caption('打飞机')
- # 设置游戏图标
- icon = pygame.image.load('ufo.png')
- pygame.display.set_icon(icon)
- # 引入背景图片
- bgImg = pygame.image.load('background.png')
- # 引入玩家图片
- playerImg = pygame.image.load('player.png')
- # 定义玩家初始位置
- playerX = 225
- playerY = 350
- # 定义变量表示玩家运动速度
- playerStep = 0
- # 引入敌人图片
- enemyImg = pygame.image.load('enemy.png')
- # 新增 通过 random 函数进行随机位置坐标生成
- enemyX = random.randint(100, 380)
- enemyY = random.randint(0, 100)
- # 定义变量表示敌人运动速度
- enemyStep = 0.1
- # 定义显示敌人的函数
- def show_enemy():
- # 标注为全局变量
- global enemyX
- global enemyY
- global enemyStep
- # 使敌人出现在(enemyX, enemyY)的位置
- screen.blit(enemyImg, (enemyX, enemyY))
- # 使敌人飞机左右移动
- enemyX += enemyStep
- # 控制敌人移动边界,当敌人碰到左右边界时反弹,当敌人运动到上下边界时停止
- if enemyX > 378:
- enemyStep *= -1
- # 新增 当碰到左右边界时下沉
- enemyY += 20
- if enemyX < 0:
- enemyStep *= -1
- enemyY += 20
- if enemyY > 572:
- enemyY = 572
- if enemyY < 0:
- enemyY = 0
- running = True
- # 进行循环 游戏主循环
- while running:
- # 绘制背景
- screen.blit(bgImg, (0, 0))
- # 绘制玩家
- screen.blit(playerImg, (playerX, playerY))
- # 调用显示敌人函数
- show_enemy()
- # 获取游戏事件队列中的所有事件(涉及到玩家的各种交互,如鼠标点击、键盘操作、窗口事件等)
- for event in pygame.event.get():
- # 如果事件是QUIT事件,如点击窗口的关闭按钮,则退出循环
- if event.type == pygame.QUIT:
- # 退出循环
- running = False
- # KEYDOWN 判断键盘是否按下
- if event.type == pygame.KEYDOWN:
- # 判断按下左右键进行移动赋值
- if event.key == pygame.K_RIGHT:
- playerStep = 0.5
- elif event.key == pygame.K_LEFT:
- playerStep = -0.5
- # KEYUP 判断键盘是否抬起
- if event.type == pygame.KEYUP:
- # 抬起键盘时将移动距离改为 0
- playerStep = 0
- # 玩家左右移动
- playerX += playerStep
- # 控制玩家移动边界
- if playerX > 378:
- playerX = 378
- if playerX < 0:
- playerX = 0
- if playerY > 572:
- playerY = 572
- if playerY < 0:
- playerY = 0
- # 界面更新
- pygame.display.update()
复制代码 效果如下:
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |