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

苏州做物流网站电话无线网网址是什么

苏州做物流网站电话,无线网网址是什么,代理公司和经纪公司的区别,给军方做网站套模板行不行文章目录 效果图项目结构实现思路源代码 效果图 项目结构 实现思路 下面是代码的实现思路#xff1a; 导入必要的库和模块#xff1a;首先#xff0c;我们导入了Python的os、time库以及pygame库#xff0c;还有植物大战僵尸游戏中用到的各个植物和僵尸的类。 初始化游戏和… 文章目录 效果图项目结构实现思路源代码 效果图 项目结构 实现思路 下面是代码的实现思路 导入必要的库和模块首先我们导入了Python的os、time库以及pygame库还有植物大战僵尸游戏中用到的各个植物和僵尸的类。 初始化游戏和加载资源接下来我们初始化了Pygame库并设置了游戏的背景尺寸。然后我们加载了游戏所需的各种图像资源包括背景、植物、僵尸等。 定义游戏元素和变量我们定义了几个全局变量包括阳光值、植物组、子弹组、僵尸组和阳光组。还定义了一些特殊事件用于在游戏中生成新的植物、子弹、僵尸和阳光等。 编写游戏主循环游戏的主循环在main()函数中。在主循环中我们首先更新了植物、子弹和僵尸的位置和状态然后在屏幕上绘制了这些元素。接下来我们响应了用户的鼠标和键盘事件包括选择植物、放置植物、收集阳光等。最后我们更新了游戏界面并检查了游戏是否结束。 处理游戏事件在主循环中我们使用pygame.event.get()函数获取当前的游戏事件并根据事件类型进行相应的处理。例如当用户点击鼠标时我们会判断用户是否点击了植物种子的图标如果是则将选择的植物类型设置为相应的值如果用户点击了游戏区域则根据选择的植物类型放置植物。 更新游戏状态和界面在主循环中我们还更新了游戏的状态如减少阳光值、增加僵尸数量等。同时我们也更新了游戏界面如重新绘制阳光值、植物、僵尸等。 检查游戏结束条件在主循环中我们还检查了游戏是否结束。如果僵尸到达了终点则游戏失败如果僵尸数量大于一定值则游戏胜利。 启动游戏最后我们在if __name__ __main__:代码块中调用了main()函数启动游戏。 玩家可以选择不同的植物来抵御僵尸的进攻并收集阳光来购买更多的植物。游戏通过不断生成新的僵尸和植物以及响应用户的操作来保持游戏的进行直到游戏结束。 源代码 完整代码地址https://gitcode.com/stormsha1/games/overview pvz/main.py import os import time import pygame from pvz.plant.Peashooter import Peashooter from pvz.plant.SunFlower import SunFlower from pvz.plant.WallNut import WallNut from pvz.plant.Sun import Sun from pvz.plant.Sun2 import Sun2 from pvz.plant.JXC import JXC from pvz.plant.Bullet import Bullet from pvz.plant.BulletJXC import BulletJXC from pvz.zombie.Zombie import Zombie from pvz.zombie.ZombieLz import ZombieLz# 初始化pygame库 pygame.init()# 设置游戏背景尺寸所有的资源图片都是基于这个尺寸制作的不建议修改 background_size (820, 560)# 创建游戏窗口并设置标题 screen pygame.display.set_mode(background_size) pygame.display.set_caption(植物大战僵尸)# 获取当前工作目录 base_path os.getcwd()# 加载背景图片 bg_img_obj pygame.image.load(os.path.join(base_path, images/a3.png)).convert_alpha()# 加载植物图片 sunFlowerImg pygame.image.load(os.path.join(base_path, images/SunFlower/SunFlower_00.png)).convert_alpha() wallNutImg pygame.image.load(os.path.join(base_path, images/WallNut/wall_nut_00.png)).convert_alpha() peaShooterImg pygame.image.load(os.path.join(base_path, images/Peashooter/Peashooter00.png)).convert_alpha() jxcImg pygame.image.load(os.path.join(base_path, images/jxc/JXC00.png)).convert_alpha()# 加载阳光储蓄罐和种子图片 sun_back_img pygame.image.load(os.path.join(base_path, images/SeedBank01.png)).convert_alpha() sunflower_seed pygame.image.load(os.path.join(base_path, images/SunFlower_kp.png)) wall_nut_seed pygame.image.load(os.path.join(base_path, images/Wallnut_kp.png)) peashooter_seed pygame.image.load(os.path.join(base_path, images/Peashooter_kp.png)) jxc_seed pygame.image.load(os.path.join(base_path, images/jxc_kp.png))# 初始化阳光值为100 text 1000# 设置阳光值字体和颜色 sun_font pygame.font.SysFont(黑体, 25) sun_num_surface sun_font.render(str(text), True, (0, 0, 0))# 创建植物组、子弹组、僵尸组和阳光组 spriteGroup pygame.sprite.Group() bulletGroup pygame.sprite.Group() zombieGroup pygame.sprite.Group() sun_sprite pygame.sprite.Group()# 定义游戏时钟和特殊事件 clock pygame.time.Clock() GEN_SUN_EVENT pygame.USEREVENT 1 # 生成阳光事件 pygame.time.set_timer(GEN_SUN_EVENT, 2000) # 每2秒生成一次阳光 GEN_BULLET_EVENT pygame.USEREVENT 2 # 生成子弹事件 pygame.time.set_timer(GEN_BULLET_EVENT, 2000) # 每2秒生成一次子弹 GEN_ZOMBIE_EVENT pygame.USEREVENT 3 # 生成僵尸事件 pygame.time.set_timer(GEN_ZOMBIE_EVENT, 10000) # 每10秒生成一次僵尸 GEN_SUN2_EVENT pygame.USEREVENT 4 # 生成双倍阳光事件 pygame.time.set_timer(GEN_SUN2_EVENT, 20000) # 每20秒生成一次双倍阳光# 初始化选择的植物类型和僵尸数量 choose 0 zombie_num 0def main():游戏主函数包含游戏主循环global zombie_num # 僵尸数量全局变量global choose # 选择的植物类型全局变量global text # 阳光值全局变量global sun_num_surface # 阳光值显示表面全局变量running True # 游戏是否运行标志index 0 # 用于植物、子弹和僵尸的更新和绘制的索引while running:# 控制游戏帧率clock.tick(20)# 检查子弹和僵尸的碰撞如果碰撞则减少僵尸的能量并移除子弹for bullet in bulletGroup:for zombie in zombieGroup:if pygame.sprite.collide_mask(bullet, zombie):if isinstance(bullet, BulletJXC): # 如果是坚果的子弹则减少2点能量zombie.energy - 2bulletGroup.remove(bullet)else: # 否则减少1点能量zombie.energy - 1bulletGroup.remove(bullet)# 检查植物和僵尸的碰撞如果碰撞则设置僵尸的GO标志为True并将僵尸添加到植物的zombies列表中for sprite in spriteGroup:for zombie in zombieGroup:if pygame.sprite.collide_mask(sprite, zombie):zombie.GO Truesprite.zombies.add(zombie)# 如果植物是坚果则检查僵尸是否在攻击范围内如果是则设置植物的攻击标志为True并生成子弹if isinstance(sprite, JXC):if abs(zombie.rect.top - sprite.rect[1]) 40 and zombie.rect.left 760:sprite.attack Trueif sprite.att 11:bullet_jxc BulletJXC(sprite.rect, background_size, zombie.rect[0])bulletGroup.add(bullet_jxc)break# 在屏幕上绘制背景、阳光储蓄罐、阳光值和种子图片screen.blit(bg_img_obj, (0, 0))screen.blit(sun_back_img, (20, 0.5))screen.blit(sun_num_surface, (35, 50))screen.blit(sunflower_seed, (80, 5))screen.blit(peashooter_seed, (121, 5))screen.blit(wall_nut_seed, (162, 5))screen.blit(jxc_seed, (203, 5))# 更新和绘制植物、子弹、僵尸和阳光spriteGroup.update(index)spriteGroup.draw(screen)bulletGroup.update(index)bulletGroup.draw(screen)zombieGroup.update(index)zombieGroup.draw(screen)sun_sprite.update(index)sun_sprite.draw(screen)# 获取鼠标位置并在鼠标位置上绘制选择的植物预览图(x, y) pygame.mouse.get_pos()if choose 1:screen.blit(sunFlowerImg, (x - sunFlowerImg.get_rect().width // 2, y - sunFlowerImg.get_rect().height // 2))if choose 2:screen.blit(peaShooterImg,(x - peaShooterImg.get_rect().width // 2, y - peaShooterImg.get_rect().height // 2))if choose 3:screen.blit(wallNutImg, (x - wallNutImg.get_rect().width // 2, y - wallNutImg.get_rect().height // 2))if choose 4:screen.blit(jxcImg, (x - jxcImg.get_rect().width // 2, y - jxcImg.get_rect().height // 2))# 增加索引值index 1# 处理pygame事件for event in pygame.event.get():# 处理生成双倍阳光事件if event.type GEN_SUN2_EVENT:sun2 Sun2()sun_sprite.add(sun2)# 处理生成僵尸事件if event.type GEN_ZOMBIE_EVENT:zombie_num 1zombie Zombie()zombie_lz ZombieLz()if 0 zombie_num 15:zombieGroup.add(zombie)if zombie_num 7:zombieGroup.add(zombie_lz)# 处理生成阳光事件if event.type GEN_SUN_EVENT:for sprite in spriteGroup:if isinstance(sprite, SunFlower):now time.time()if now - sprite.last_time 10: # 如果距离上次生成阳光的时间大于等于10秒则生成阳光sun Sun(sprite.rect)sun_sprite.add(sun)sprite.last_time now# 处理生成子弹事件if event.type GEN_BULLET_EVENT:for sprite in spriteGroup:for zombie in zombieGroup:if isinstance(sprite, Peashooter) \and 0 sprite.rect[1] - zombie.rect[1] 50 \and zombie.rect[0] 760:bullet Bullet(sprite.rect, background_size)bulletGroup.add(bullet)break# 处理退出游戏事件if event.type pygame.QUIT:running False# 处理鼠标点击事件if event.type pygame.MOUSEBUTTONDOWN:pressed_key pygame.mouse.get_pressed()if pressed_key[0]:pos pygame.mouse.get_pos()x, y pos# 如果点击了种子按钮则设置选择的植物类型if 80 x 121 and 5 y 63 and int(text) 50:choose 1elif 121 x 162 and 5 y 63 and int(text) 100:choose 2elif 162 x 203 and 5 y 63 and int(text) 50:choose 3elif 203 x 244 and 5 y 63 and int(text) 100:choose 4# 如果点击了游戏区域则根据选择的植物类型放置植物elif 36 x 800 and 70 y 550:if choose 1:true_x x // 90 * 85 35 # 计算植物的左上角坐标true_y y // 100 * 95 - 15can_hold True # 是否可以放置植物标志for sprite in spriteGroup:if sprite.rect.left true_x and sprite.rect.top true_y:can_hold Falsebreakif not can_hold or true_y 25:breaksunflower SunFlower(time.time(), (true_x, true_y)) # 创建向日葵实例spriteGroup.add(sunflower) # 将向日葵添加到植物组中choose 0 # 重置选择的植物类型text int(text) # 将阳光值转换为整数text - 50 # 减少50阳光my_font pygame.font.SysFont(黑体, 25) # 设置字体sun_num_surface my_font.render(str(text), True, (0, 0, 0)) # 更新阳光值显示表面if choose 2:true_x x // 90 * 85 32true_y y // 100 * 95 - 18can_hold Truefor sprite in spriteGroup:if sprite.rect.left true_x and sprite.rect.top true_y:can_hold Falsebreakif not can_hold or true_y 25:breakpeashooter Peashooter((true_x, true_y)) # 创建豌豆射手实例spriteGroup.add(peashooter) # 将豌豆射手添加到植物组中choose 0text int(text)text - 100 # 减少100阳光my_font pygame.font.SysFont(黑体, 25)sun_num_surface my_font.render(str(text), True, (0, 0, 0))if choose 3:true_x x // 90 * 85 35true_y y // 100 * 95 - 15can_hold Truefor sprite in spriteGroup:if sprite.rect.left true_x and sprite.rect.top true_y:can_hold Falsebreakif not can_hold or true_y 25:breakwall_nut WallNut((true_x, true_y)) # 创建坚果实例spriteGroup.add(wall_nut) # 将坚果添加到植物组中choose 0text int(text)text - 50 # 减少50阳光my_font pygame.font.SysFont(黑体, 25)sun_num_surface my_font.render(str(text), True, (0, 0, 0))if choose 4:true_x x // 90 * 85 22true_y y // 100 * 95 - 35can_hold Truefor sprite in spriteGroup:if sprite.rect.left true_x and sprite.rect.top true_y:can_hold Falsebreakif not can_hold or true_y 25:breakjxc JXC((true_x, true_y)) # 创建坚果墙实例spriteGroup.add(jxc) # 将坚果墙添加到植物组中choose 0text int(text)text - 100 # 减少100阳光my_font pygame.font.SysFont(黑体, 25)sun_num_surface my_font.render(str(text), True, (0, 0, 0))# 如果点击了阳光则收集阳光并更新阳光值显示表面for sun in sun_sprite:if sun.rect.collidepoint(pos):sun_sprite.remove(sun)text str(int(text) 25)sun_font pygame.font.SysFont(黑体, 25)sun_num_surface sun_font.render(str(text), True, (0, 0, 0))# 检查僵尸是否到达终点或游戏是否胜利for zombie in zombieGroup:if zombie.rect.left -120: # 如果僵尸到达终点则游戏失败print(你的脑子被僵尸吃了)running Falseif zombie_num 20: # 如果僵尸数量大于20则游戏胜利print(胜利)running False# 更新游戏界面pygame.display.update()if __name__ __main__:main()完整代码地址https://gitcode.com/stormsha1/games/overview
http://www.hkea.cn/news/14576198/

相关文章:

  • 苏州做网站平台电子商务网站建设技能实训答案
  • 网站建设蓝图ppt上海专业制作网页
  • 卖鱼的亲戚要我帮忙做网站国内平面设计公司
  • 网站优化公司排名深圳wordpress 知言主题
  • 国内主流网站开发技术台州优秀关键词优化
  • 网站域名名字西安市专业网站建设
  • 绵阳网站搜索优化前端网站开发
  • 网站建设有哪些工作需需要筹备网络安全行业前景
  • 网站301重定向检测网上做效果图的平台
  • 校园二手网站开发的意义优化关键词排名软件
  • ps做网站字号大小asp网站制作软件
  • 自己建网站备案怎么建立一个公司的网站吗
  • 网站开发的目的及意义外贸业务员如何开发客户
  • 张家港百度网站推广网站可以给pdf做笔记
  • 绵阳做网站公司玉林做绿化苗木网站的是哪个单位
  • 基本seo沈阳seo博客
  • 网站设计培训班老师东莞做网站最好的是哪家
  • 公司网站站群是什么wordpress 一个主题公园
  • 网站改版的宣传词个人网站建设流程
  • 什么公司网站建设做的好网站如何做微信推广方案设计
  • 电子商务网站建设 市场分析个人网站做重定向图片
  • 长沙网站优化厂家网站seo内容优化
  • 外贸玩具网站proxy网页在线代理
  • 网站设计公司怎么样个人建立网站怎么赚钱
  • 做淘宝代理哪个网站好动态图片制作
  • 网站建设和管理专业手机制作游戏软件
  • 速效成交型网站seo网站关键词优化排名
  • 网站项目报价单模板免费下载wordpress 交易插件
  • 教育培训网站制作帮别人做视频剪辑的网站
  • 网站规划与建设课程威海市建设局网站