Pygame游戏(5)
这是一个让坦克不断切换形态,用户通过按下键盘的上下左右键来控制坦克的方法

首先,把窗口的基本框架搭好

import pygame,sys
from pygame.locals import *pygame.init()    #初始化模块
pygame.mixer.init()     #初始化播放器
screen = pygame.display.set_mode((640,480))
pygame.display.set_caption("合金弹头")clock = pygame.time.Clock()    #控制帧数
back = pygame.image.load('photo/bg.jpg') #加载背景图片
backposition = back.get_rect()          #获取图片的外接矩形pygame.mixer.music.load('game_music.ogg')  #加载背景音乐
pygame.mixer.music.set_volume(0.5)          #设置音量
pygame.mixer.music.play(-1)                 #循环播放while True:for event in pygame.event.get():if event.type == QUIT:sys.exit()screen.blit(back,backposition)        #绘制背景图片pygame.display.update()              #刷新屏幕clock.tick(60)                     #帧数设置为60

这样一个带背景图的窗口就创建好啦

接下去让我们把坦克加入进来(解释在代码行的后面)

import pygame,syspygame.init()
pygame.mixer.init()screen = pygame.display.set_mode((640,480))pygame.display.set_caption("合金弹头")clock = pygame.time.Clock()            #调节帧数speed = [1,0]i=0           #记录帧
change = 1    #记录切换
state = False #坦克形态开关
direct = 'L'  #转向开关
fire = False  #开火开关back = pygame.image.load('photo/bg.jpg')     #加载背景图片
tank = pygame.image.load('photo/tank_01.png')    #加载坦克1的图片pygame.mixer.music.load('game_music.ogg')        #加载音乐
pygame.mixer.music.set_volume(0.5)              #设置音量
pygame.mixer.music.play(-1)                     #循环播放backposition = back.get_rect()            #获取外接矩形
tankposition = tank.get_rect()
tankposition.center = (80,240)          #把初始位置放地图前端位置while True:#每过一段时间切换坦克的形态(用i记录)i = i + 1          if i%10 == 0:state = Trueelse:state = False#让坦克在两种形态中不断切换if state:if change == 1:tank = pygame.image.load('photo/tank_02.png') change = 2else:tank = pygame.image.load('photo/tank_01.png')change = 1#图片水平翻转180度(按下左右键让坦克掉头,不然坦克一直是头朝着右方)if direct == 'R':img2=pygame.transform.flip(tank,True,False)       else:img2=tankfor event in pygame.event.get():       #获取事件if event.type == pygame.QUIT:        #鼠标按下窗口的关闭sys.exit()                        #退出if event.type == pygame.KEYDOWN:   #按下键盘if event.key == pygame.K_ESCAPE:#按下ESC键sys.exit()                    #退出if event.key == pygame.K_RIGHT:    #按下右键speed = [2,0]             #速度direct = 'L'              #掉头if event.key == pygame.K_LEFT: #按下左键speed = [-2,0]                #速度direct = 'R'              #掉头if event.key == pygame.K_UP:   #按下上键speed = [0,-2]                #速度if event.key == pygame.K_DOWN: #按下下键speed = [0,2]             #速度if event.key == pygame.K_SPACE:    #按下空格fire = True                   #开火if event.type == pygame.KEYUP:     #键盘释放speed = [0,0]                 #原地不动if event.key == pygame.K_SPACE:  #空格键释放fire = False             #开火停止tankposition = tankposition.move(speed)   #让坦克以速度speed前进screen.blit(back,backposition)    #绘制背景图片screen.blit(img2,tankposition)   #绘制坦克pygame.display.update()            #刷新屏幕clock.tick(60)                 #控制帧数


这是坦克的两种形态,让它以一定时间不断切换,就会产生开头那样坦克一上一下的动作喽

坦克的开火开关已经做好,有兴趣的小伙伴只要找个子弹的图片,设置代码让其在坦克的前端以一定速度前进就好啦
具体的做法,将会在我的下一篇博客 豌豆射手 通过射手发射豌豆 ,便能让坦克同样的发射子弹

点击:
Pygame游戏之 豌豆射手

还有一款难度和挑战性更大一个框架
Pygame游戏之 愤怒的小鸟

Pygame游戏之 合金弹头相关推荐

  1. 使用pygame开发游戏:合金弹头(3)

    导读 Python的强大超出你的认知,Python的功能不止于可以做网络爬虫,数据分析,Python完全可以进行后端开发,AI,Python也可进行游戏开发,本文将会详细介绍Python使用pygam ...

  2. 使用pygame开发游戏:合金弹头(1)

    导读 Python的强大超出你的认知,Python的功能不止于可以做网络爬虫,数据分析,Python完全可以进行后端开发,AI,Python也可进行游戏开发,本文将会详细介绍Python使用pygam ...

  3. 使用pygame开发游戏:合金弹头(4)

    导读 Python的强大超出你的认知,Python的功能不止于可以做网络爬虫,数据分析,Python完全可以进行后端开发,AI,Python也可进行游戏开发,本文将会详细介绍Python使用pygam ...

  4. 使用pygame开发游戏:合金弹头(5)

    导读 Python的强大超出你的认知,Python的功能不止于可以做网络爬虫,数据分析,Python完全可以进行后端开发,AI,Python也可进行游戏开发,本文将会详细介绍Python使用pygam ...

  5. 使用pygame开发游戏:合金弹头(2)

    导读 Python的强大超出你的认知,Python的功能不止于可以做网络爬虫,数据分析,Python完全可以进行后端开发,AI,Python也可进行游戏开发,本文将会详细介绍Python使用pygam ...

  6. iOS平台经典游戏《合金弹头X》上架 售价25元

    日本SNK Playmore株式会社正打算将<合金弹头>系列都移植到iOS平台上去.去年7月,他们首先在iOS平台上推出了<合金弹头3>.由于某些特殊的原因,他们在移植< ...

  7. 【原创游戏】合金弹头S——Unity制作的同人游戏

    --纪念合金弹头陪伴的童年,回味横版过关射击快感 合金弹头S是一款Unity制作的同人游戏,由于当时我只是一个学了3个月游戏的同学,所以尚有一些不足之处,但这是我用Unity做的第一个原创作品 下载地 ...

  8. Pygame游戏之 愤怒的小鸟

    Pygame游戏(7) 让我们用键盘控制小鸟躲避成群结队的绿皮猪 当小鸟与绿皮猪发生碰撞后,会进入一个新的界面,并且有按钮让玩家重玩(动态图稍大,加载比较慢) 首先我们还是老步骤 准备好一个基本的游戏 ...

  9. 合金弹头java视频_Java swing实现的仿植物大战僵尸版合金弹头游戏源码附带视频指导教程...

    <p> <span style="font-family:微软雅黑;font-size:16px;color:#555555;line-height:2;"> ...

最新文章

  1. Logon database Tiger引起DataGuard不同步问题
  2. 理解LSTM/RNN中的Attention机制
  3. Windwos 08R2_DNS全面图文详解
  4. 08-spring整合 junit
  5. Apache2.4中开通HTTP基本认证
  6. 【Android】可以下拉刷新的webview,使你的webview效果更加好看,封装自己的WebView...
  7. 2018年香港私楼落成量达2.1万个 创14年新高
  8. java audiorecord_Android 录音实现(AudioRecord)
  9. Codeforces Round #732 (Div. 2) C. AquaMoon and Strange Sort 思维
  10. 百度产品经理vs 腾讯产品经理:技术大牛与小白
  11. shell循环,判断介绍,以及实例
  12. docker 中运行 mysql
  13. [原创]java WEB学习笔记80:Hibernate学习之路--- hibernate配置文件:JDBC 连接属性,C3P0 数据库连接池属性等...
  14. RS232应用----电功率计
  15. 如何解决linux下编译出现的multiple definition of错误
  16. 克罗谈投资策略04_感觉与现实
  17. 快速开发框架介绍-懂你的RUOYI
  18. java传参方式_Java里方法的参数传递方式
  19. 12个开放平台大家一起来玩
  20. excel 职位分析

热门文章

  1. 为iPhone6设计自适应布局(一)
  2. mysql update批量更新_MySql中4种批量更新的方法
  3. js计算时间差(小时和分钟)demo效果
  4. 使用C语言连接MySQL
  5. Java 使用Slf4j记录日志
  6. ET框架-17 ET框架登录账号请求逻辑编写(2)
  7. java理解向上转型和向下转型
  8. 转 【调侃】IOC前世今生
  9. list 初始化大小
  10. git基础教程(20) 从版本库删除文件git rm