当前位置: 首页 > news >正文

淄博网站制作定制wordpress 缓存头像

淄博网站制作定制,wordpress 缓存头像,网站建设有什么看法,au网站怎么注册前言 在上一篇中#xff0c;我们初步熟悉了pygame的控制流程#xff0c;但这对于一个游戏而言是远远不够的。所以在这一篇中#xff0c;我们的任务是添加一架飞机#xff08;玩家#xff09;#xff0c;并且能够控制它进行移动#xff0c;这样我们就又离目标进了一步了~… 前言   在上一篇中我们初步熟悉了pygame的控制流程但这对于一个游戏而言是远远不够的。所以在这一篇中我们的任务是添加一架飞机玩家并且能够控制它进行移动这样我们就又离目标进了一步了~εε(ノ≧∇≦)ノ   正片开始 1. 把我们的战斗机搬上屏幕   在正式上代码以前有一点需要说明的我们可以看到所有屏幕上出现的元素都在资源文件resources/image/shoot.png中那我们要怎么做才能把一只飞机给裁剪出来呢在pygame中所有在屏幕上显示的元素都可以视为一个surface利用这个特点我们可以把资源文件导入load()函数然后用surface.subsurface()函数把shoot.png中我们想要的元素裁剪出来这样问题就解决了~tips怎样才知道shoot.png中飞机的准确坐标呢在resources/image/shoot.pack文件中已经详细记录了每个屏幕元素的左上角坐标以及它的宽和高了   先上代码在注释# new add 之间的代码为新加入代码 1 import pygame # 导入pygame库2 from pygame.locals import * # 导入pygame库中的一些常量3 from sys import exit # 导入sys库中的exit函数4 5 # 定义窗口的分辨率6 SCREEN_WIDTH 4807 SCREEN_HEIGHT 6408 9 # 计数ticks new add 10 ticks 0 11 # 计数ticks new add 12 13 # 初始化游戏 14 pygame.init() # 初始化pygame 15 screen pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT]) # 初始化窗口 16 pygame.display.set_caption(This is my first pygame-program) # 设置窗口标题 17 18 # 载入背景图 19 background pygame.image.load(resources/image/background.png) 20 21 # 载入资源图片 new add 22 shoot_img pygame.image.load(resources/image/shoot.png) 23 # 用subsurface剪切读入的图片 24 hero1_rect pygame.Rect(0, 99, 102, 126) 25 hero2_rect pygame.Rect(165, 360, 102, 126) 26 hero1 shoot_img.subsurface(hero1_rect) 27 hero2 shoot_img.subsurface(hero2_rect) 28 hero_pos [200, 500] 29 # 载入资源图片 new add 30 31 # 事件循环(main loop) 32 while True: 33 34 # 绘制背景 35 screen.blit(background, (0, 0)) 36 37 # 绘制飞机 new add 38 if ticks % 50 25: 39 screen.blit(hero1, hero_pos) 40 else: 41 screen.blit(hero2, hero_pos) 42 ticks 1 43 # 绘制飞机 new add 44 45 # 更新屏幕 46 pygame.display.update() 47 48 # 处理游戏退出 49 # 从消息队列中循环取 50 for event in pygame.event.get(): 51 if event.type pygame.QUIT: 52 pygame.quit() 53 exit() 不妨运行一下    可以看到我们的飞机动了究竟是怎样实现动画效果的呢在代码中新加入的代码一共有三处显示玩家飞机的那一段已经解释过了现在我们来解释其余的两段新加入的代码。首先增加了一个计数变量ticks在消息循环中每循环一次就累加一次可以理解为每一个周期就是1 tick我们可以利用周期数来分隔不同的显示效果我们读入了两张不同的玩家飞机图片利用周期数实现每50个周期前25个周期显示hero1后25个周期显示hero2这样就有了缓慢变化的动态效果。不过值得注意的是这样每一次循环就计算并判断一次ticks的做法明显不是好方法。还有(╯°口°)╯(┴—┴Python是木有自增表达式的我试图ticks结果报错了。   战斗机已经准备就绪该教会飞行员怎样操作了~(・ω・´)   2. 用键盘控制飞机移动   我们知道每敲一下键盘都会产生一个事件而这个事件能被Python检测到既然知道了这个大前提那控制飞机就很容易了。   come on code~ ( °∀°) 1 import pygame # 导入pygame库2 from pygame.locals import * # 导入pygame库中的一些常量3 from sys import exit # 导入sys库中的exit函数4 5 # 定义窗口的分辨率6 SCREEN_WIDTH 4807 SCREEN_HEIGHT 6408 9 ticks 0 10 # dict new add 11 offset {pygame.K_LEFT:0, pygame.K_RIGHT:0, pygame.K_UP:0, pygame.K_DOWN:0} 12 # dict new add 13 14 # 初始化游戏 15 pygame.init() # 初始化pygame 16 screen pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT]) # 初始化窗口 17 pygame.display.set_caption(This is my first pygame-program) # 设置窗口标题 18 19 # 载入背景图 20 background pygame.image.load(resources/image/background.png) 21 22 # 载入飞机图片 23 shoot_img pygame.image.load(resources/image/shoot.png) 24 # 用subsurface剪切读入的图片 25 hero1_rect pygame.Rect(0, 99, 102, 126) 26 hero2_rect pygame.Rect(165, 360, 102, 126) 27 hero1 shoot_img.subsurface(hero1_rect) 28 hero2 shoot_img.subsurface(hero2_rect) 29 hero_pos [200, 500] 30 31 # 事件循环(main loop) 32 while True: 33 34 # 绘制背景 35 screen.blit(background, (0, 0)) 36 37 # 绘制飞机 38 if ticks % 50 25: 39 screen.blit(hero1, hero_pos) 40 else: 41 screen.blit(hero2, hero_pos) 42 ticks 1 # python已略去自增运算符 43 44 # 更新屏幕 45 pygame.display.update() 46 47 # 处理游戏退出 48 # 从消息队列中循环取 49 for event in pygame.event.get(): 50 if event.type pygame.QUIT: 51 pygame.quit() 52 exit() 53 54 # Python中没有switch-case 多用字典类型替代 55 # 控制方向 new add 56 if event.type pygame.KEYDOWN: 57 if event.key in offset: 58 offset[event.key] 3 59 elif event.type pygame.KEYUP: 60 if event.key in offset: 61 offset[event.key] 0 62 63 # part 1 64 #offset_x offset[pygame.K_RIGHT] - offset[pygame.K_LEFT] 65 #offset_y offset[pygame.K_DOWN] - offset[pygame.K_UP] 66 #hero_pos [hero_pos[0] offset_x, hero_pos[1] offset_y] 67 # part 2 68 offset_x offset[pygame.K_RIGHT] - offset[pygame.K_LEFT] 69 offset_y offset[pygame.K_DOWN] - offset[pygame.K_UP] 70 hero_pos [hero_pos[0] offset_x, hero_pos[1] offset_y] 71 # 控制方向 new add 新加入了两处一个是字典类型的变量一个是控制方向的代码。跟之前控制程序退出的代码一样依然是从事件队列中取事件当event.type为按键事件时再判断event.key是否属于上下左右四个键位中的其中一个最后在其相应方向上给一个偏移量即完成判断的过程松键的话该方向上的偏移量赋值为0这样该键方向上就没有位移了最后将偏移量加到飞机的pos上下一轮刷新时自然就到移动到新地方了。这里插播一个事我以前写过c和java所以写到判断键盘键位时很自然就想用switch-case语句没想到竟然出错了(╯°口°)╯(┴—┴后来才发现原来Python是没有switch-case语句的switch-case语句多用字典数据结构代替感觉这样的写法就更灵活了 上面讲得都比较简单现在我们要思考一个问题上面的代码中line 63-66和line 67-70的代码是一样的但两部分代码的效果却是很不一样。part1代码使得我们要按一次键飞机才会动一次而在part2代码中我们可以长按方向键来控制飞机不禁感慨一下Python的缩进。part1是在for循环的影响下的也就是说事件队列中有事件才会执行part1的代码假设我们长按方向左键注意击键一次只会产生一个pygame.KEYDOWN事件所以长按也只触发一次飞机也只会往左移3个像素点而part2代码由于不在for循环内所以每一tick就向左移3个像素点直到松开方向左键。 演示一下效果 好的控制飞机已经不成问题了不过大家发现飞机有一个小问题了吗它会穿到窗口的“外面”去不过我们只要添加一个小小的限制就可以解决问题了只要把line68-70换成以下边界判断代码就可以了。 1 hero_x hero_pos[0] offset[pygame.K_RIGHT] - offset[pygame.K_LEFT]2 hero_y hero_pos[1] offset[pygame.K_DOWN] - offset[pygame.K_UP]3 if hero_x 0:4 hero_pos[0] 05 elif hero_x SCREEN_WIDTH - hero1_rect.width:6 hero_pos[0] SCREEN_WIDTH - hero1_rect.width7 else:8 hero_pos[0] hero_x9 10 if hero_y 0: 11 hero_pos[1] 0 12 elif hero_y SCREEN_HEIGHT - hero1_rect.height: 13 hero_pos[1] SCREEN_HEIGHT - hero1_rect.height 14 else: 15 hero_pos[1] hero_y 今天功能就完成到这里吧~(・ω・´)   转载于:https://www.cnblogs.com/wuzhanpeng/p/4264267.html
http://www.zqtcl.cn/news/670003/

相关文章:

  • 网站开发后端框架什么意思树莓派3 部署wordpress
  • 站长之家最新域名查询合肥网站建设5k5
  • h5做网站什么软件北京公司注销流程及费用
  • 淮北市相山区建设局网站合肥比较好的网站制作
  • 松岗营销型网站建设公司网站需要服务器吗
  • 图书馆网站信息化建设中国seo第一人
  • 域名网站负责人的责任一键制作单页网站
  • 南宁建设局网站建设有限公司
  • 湛江建设工程交易中心网站企业营销网站建设步骤
  • 网站所有者查询罗湖做网站的公司
  • 网站推广的目标是什么如何提高网站在百度的排名
  • 建设网站基础wordpress 网络图片
  • 深圳网站搜索优化工具义乌公司网站
  • 百度搜索网站带图片sem是什么品牌
  • 百度网盘app下载辽宁seo
  • 一般做网站用什么软件企业管理咨询服务机构
  • 达内培训网站开发金融公司网站 html
  • 珠海网站制作推荐微信营销和微博营销的区别
  • 电影网站如何做5网站建设公司
  • 河南网站优化公司哪家好南山网站设计线
  • 网站构建代码模板番禺网站建设
  • 拟一份饰品网站建设合同网站开发应注意哪些问题
  • 芜湖建站公司做网站的人多吗
  • 网站怎么加二级域名微信授权登录网站退出怎么做
  • 如何把旅行社网站做的好看网站创建方案怎么写
  • 织梦网站图标更换宠物网页设计图片
  • 如何查找网站竞争对手的宣传方式北京网站搭建公司电话
  • 北京正规制作网站公司wordpress 获取图片地址
  • 大学路网站建设推广图片素材
  • wordpress 创建网站搜索引擎优化代理