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

网站响应度seo优化自学

网站响应度,seo优化自学,推广平台有哪些优势,创建网站运营费用制作一款DIY的‘植物大战僵尸’游戏引起了很多人的兴趣。在这里#xff0c;我将分享一个使用Python语言在PyCharm环境中开发的初始状态版本。这个版本主要应用了pygame库来完成#xff0c;是一个充满创意和趣味的魔改版本。 文章目录 前言一、开发环境准备二、代码1.main方法… 制作一款DIY的‘植物大战僵尸’游戏引起了很多人的兴趣。在这里我将分享一个使用Python语言在PyCharm环境中开发的初始状态版本。这个版本主要应用了pygame库来完成是一个充满创意和趣味的魔改版本。 文章目录 前言一、开发环境准备二、代码1.main方法2.敌人角色示例2.我方角色示例 总结 前言 近期《植物大战僵尸杂交版》的热度确实高涨这主要得益于其独特的创意、对经典游戏的致敬与创新以及玩家社区的积极反馈与传播。《植物大战僵尸杂交版》由B站UP主“潜艇伟伟迷”开发制作游戏中引入了杂交植物的概念如豌豆向日葵、火焰花女王等这些杂交植物结合了多种植物的特性拥有独特的攻击方式和能力极大地丰富了游戏的策略性和可玩性。除了杂交植物外游戏中还加入了多种新奇的僵尸类型如武装舞王僵尸、冰车巨人等以及全新的地图设计为玩家带来更加刺激和挑战性的游戏体验。游戏不仅保留了原版的经典模式还增加了抽奖盒子无尽模式等Roguelike玩法以及多种有趣的小游戏和挑战模式让玩家在重复游玩中也能保持新鲜感。 制作一款DIY的‘植物大战僵尸’游戏引起了很多人的兴趣。在这里我将分享一个使用Python语言在PyCharm环境中开发的初始状态版本。这个版本主要应用了pygame库来完成是一个充满创意和趣味的魔改版本。 在这篇博文我将源代码以及运行程序压缩包: 运行程序 (解压后可直接运行)一并分享出来并给出源码链接: 源码供免费下载。 里面的所有角色图片来自网络资源都来自于网络资源由本人一张一张裁剪制作而成制作不易希望喜欢并使用的小伙伴可以为我点一个star。 提示以下是本篇文章正文内容下面案例可供参考 一、开发环境准备 实现上述描述的DIY“植物大战僵尸”游戏你需要准备以下代码环境 1.Python语言 确保你的计算机上安装了Python。可以从Python的官方网站下载并安装最新版本的Python。 2.PyCharm IDE PyCharm是一个流行的Python集成开发环境IDE它提供了代码编辑、调试、测试等功能。你可以从JetBrains的官方网站下载并安装PyCharm。 3.pygame库 pygame是一个用于创建游戏的Python库它提供了图形、声音、事件处理等游戏开发所需的功能。你可以使用pip命令来安装pygame库pip install pygame。 二、代码 1.main方法 代码如下 # -*- codeing utf-8 -*- # Time : 2023/1/14 15:59 # Author : 小马 # File: plant_vs_zoomie_game_normal_main.py # Software : PyCharm import time import pygame import random import os from Adc import Adc from shooter import shoot from Ap import Ap from tank import tank from Sun import Sun from Zombie import Zombie from badmanmini import badmanmini from Bullet import Bullet from bulletshooter import bulletshooter from enemy import enemy from Carman import Carman from Boss import Boss from pythonExtend import pythonExtend pygame.init() #1680*720 backgd_size(1200,600) screenpygame.display.set_mode(backgd_size) pygame.display.set_caption(保卫花花之家) bg_image_path material/bg1.1.png bg_img_objpygame.image.load(bg_image_path).convert_alpha() # sunbank_image_path material/counter2.jpeg # sunbank_img_objpygame.image.load(sunbank_image_path).convert_alpha() sunbankImgpygame.image.load(material/cardbank.png).convert_alpha() deleteImgpygame.image.load(material/delete1.png).convert_alpha() deletepygame.image.load(material/delete.png).convert_alpha() cardadcpygame.image.load(material/cardadc.png).convert_alpha() cardappygame.image.load(material/cardap.png).convert_alpha() cardtankpygame.image.load(material/cardtank.png).convert_alpha() cardshooterpygame.image.load(material/cardshooter.png).convert_alpha() apImgpygame.image.load(material/character3.1.PNG).convert_alpha() tankImgpygame.image.load(material/character4.1.PNG).convert_alpha() adcImgpygame.image.load(material/character1.1.1.PNG).convert_alpha() shooterImgpygame.image.load(material/character2.1.PNG).convert_alpha() text900 sun_fontpygame.font.SysFont(arial,25) sun_num_surfacesun_font.render(text,True,(0,0,0)) # adcAdc() # apAp() # tanktank() #shootshoot() # zombieZombie() # badmanbadmanmini() # enemyenemy() spriteGrouppygame.sprite.Group() #spriteGroup.add(adc) # spriteGroup.add(ap) # spriteGroup.add(tank) #spriteGroup.add(shoot) # spriteGroup.add(zombie) # spriteGroup.add(badman) # spriteGroup.add(enemy) sunListpygame.sprite.Group() bulletListpygame.sprite.Group() enemyListpygame.sprite.Group() clockpygame.time.Clock() GEN_SUN_EVENTpygame.USEREVENT1 pygame.time.set_timer(GEN_SUN_EVENT,1000) GEN_BULLET_EVENTpygame.USEREVENT2 pygame.time.set_timer(GEN_BULLET_EVENT,3000) GEN_ENERMY_EVENTpygame.USEREVENT3 pygame.time.set_timer(GEN_ENERMY_EVENT,9000) choose0 #点中太阳花为1 点中坚果为2 点中射手为3 点中ADC为4 def init():pygame.mixer.init()smaterial/soundbgmpygame.mixer.Sound(os.path.join(s,bgm1.mp3))startpygame.mixer.Sound(os.path.join(s,start1.mp3))start2pygame.mixer.Sound(os.path.join(s,start2.mp3))bossbgmpygame.mixer.Sound(os.path.join(s,boss.mp3))tank1pygame.mixer.Sound(os.path.join(s,tank.mp3))pygame.mixer.Sound.play(start)pygame.mixer.Sound.play(start2)sounds[]global text,chooseglobal sun_num_surfacerunning Trueindex0while running:# sounds.append(bgm)# for sound in sounds:# pygame.mixer.Sound.play(sound)pygame.mixer.Sound.play(bgm)clock.tick(10)# if index % 400:# sSun(ap.rect)# sunList.add(s)# if index % 400:# boss Boss()# spriteGroup.add(boss)# for i in range(1,5):# j random.randint(1, 3)# if j1:# zombie Zombie()# badman badmanmini()# ene enemy()# spriteGroup.add(zombie)# spriteGroup.add(badman)# spriteGroup.add(ene)# elif j2:# badman badmanmini()# e enemy()## spriteGroup.add(badman)# spriteGroup.add(e)# elif j3:# en enemy()# carmanCarman()## spriteGroup.add(en)# spriteGroup.add(carman)# if index %800:# bBullet(adc.rect,backgd_size)# spriteGroup.add(b)# if index %300:# dbulletshooter(shoot.rect,backgd_size)# spriteGroup.add(d)for bullet in bulletList:for enem in enemyList:if pygame.sprite.collide_mask(bullet,enem):bulletList.remove(bullet)enem.blood-1for item in spriteGroup:for enem in enemyList:if isinstance(item,tank) and pygame.sprite.collide_mask(item,enem):enem.blood-1item.blood-1screen.blit(bg_img_obj,(0,0))screen.blit(sunbankImg,(320,-12))screen.blit(sun_num_surface,(350,57))screen.blit(cardap,(415,3))screen.blit(cardadc, (491,3))screen.blit(cardshooter, (567,3))screen.blit(cardtank, (643,3))screen.blit(deleteImg, (719, 3))spriteGroup.update(index)spriteGroup.draw(screen)sunList.update(index)sunList.draw(screen)bulletList.update(index)bulletList.draw(screen)enemyList.update(index)enemyList.draw(screen)(x,y)pygame.mouse.get_pos()if choose1:rightapImg.get_rect().rightbottomapImg.get_rect().bottomscreen.blit(apImg,(x-right/2,y-bottom/2))elif choose4:right apImg.get_rect().rightbottom apImg.get_rect().bottomscreen.blit(tankImg,(x-right/2,y-bottom/2))elif choose2:right apImg.get_rect().rightbottom apImg.get_rect().bottomscreen.blit(adcImg,(x-right/2,y-bottom/2))elif choose 3:right apImg.get_rect().rightbottom apImg.get_rect().bottomscreen.blit(shooterImg, (x-right/2,y-bottom/2))elif choose5:right apImg.get_rect().rightbottom apImg.get_rect().bottomscreen.blit(delete,(x-right/2,y-bottom/2))# screen.blit(adc.images[index%8],adc.rect)# screen.blit(shoot.images[index%31],shoot.rect)# screen.blit(ap.images[index % 26], ap.rect)# screen.blit(tank.images[index % 31], tank.rect)# for sun in sunList:# screen.blit(sun.images[index % 1], sun.rect)index1for event in pygame.event.get():if event.typeGEN_SUN_EVENT:for sprite in spriteGroup:if isinstance(sprite,Ap):nowtime.time()if now-sprite.lasttime5:s Sun(sprite.rect)sunList.add(s)sprite.lasttimenowif event.typeGEN_BULLET_EVENT:for sprite in spriteGroup:if isinstance(sprite,Adc):nowtime.time()if now-sprite.lasttime5:bBullet(sprite.rect,backgd_size)bulletList.add(b)sprite.lasttimenowelif isinstance(sprite,shoot):bsbulletshooter(sprite.rect,backgd_size)bulletList.add(bs)if event.typeGEN_ENERMY_EVENT:boss Boss()enemyList.add(boss)for i in range(1, 5):j random.randint(1, 3)if j 1:zombie Zombie()badman badmanmini()ene enemy()enemyList.add(zombie)enemyList.add(badman)enemyList.add(ene)elif j 2:badman badmanmini()e enemy()enemyList.add(badman)enemyList.add(e)elif j 3:en enemy()carman Carman()pythonextendpythonExtend()enemyList.add(en)enemyList.add(carman)enemyList.add(pythonextend)if event.typepygame.QUIT:runningFalseif event.typepygame.MOUSEBUTTONDOWN:pressed_pointpygame.mouse.get_pressed()if pressed_point[0]1:positionpygame.mouse.get_pos()x,ypositionprint(position)if 415x486 and 3y84 and int (text)50:choose1elif 491x562 and 3y84 and int (text)100:choose2elif 567x638 and 3y84 and int (text)100:choose3elif 643x714 and 3y84 and int (text)50:choose4elif 719x771 and 3y83:choose5elif 425x1200 and 100y600:if choose1:current_timetime.time()apAp(current_time)i425while(i1200):if ixi85:ap.rect.leftibreakii85j100while(j600):if jyj100:ap.rect.topjbreakjj100#positiony#positionxspriteGroup.add(ap)choose0text str(int(text) - 50)sun_font pygame.font.SysFont(arial, 25)sun_num_surface sun_font.render(text, True, (0, 0, 0))# textint(text)# text-50# textstr(text)# myfontpygame.font.SysFont(arial,20)# txtImg myfont.render(str(text),True,(0,0,0))elif choose4:# pygame.mixer.init()# s material/sound# bgm pygame.mixer.Sound(material/sound/tank.mp3)# bgm.play()t tank()i 425while (i 1200):if i x i 85:t.rect.left ibreaki i 85j 100while (j 600):if j y j 100:t.rect.top jbreakj j 100# positiony# positionxspriteGroup.add(t)# pygame.mixer.Sound.play(tank1)choose 0text str(int(text) - 50)sun_font pygame.font.SysFont(arial, 25)sun_num_surface sun_font.render(text, True, (0, 0, 0))elif choose2:current_time time.time()adc Adc(current_time)i 425while (i 1200):if i x i 85:adc.rect.left ibreaki i 85j 100while (j 600):if j y j 100:adc.rect.top jbreakj j 100# positiony# positionxspriteGroup.add(adc)choose 0text str(int(text) - 50)sun_font pygame.font.SysFont(arial, 25)sun_num_surface sun_font.render(text, True, (0, 0, 0))elif choose3:shshoot()i 400while (i 1175):if i x i 85:sh.rect.left ibreaki i 85j 80while (j 580):if j y j 100:sh.rect.top jbreakj j 100# positiony# positionxspriteGroup.add(sh)# pygame.mixer.Sound.play(tank1)choose 0text str(int(text) - 50)sun_font pygame.font.SysFont(arial, 25)sun_num_surface sun_font.render(text, True, (0, 0, 0))elif choose5:for sprite in spriteGroup:if sprite.rect.leftxsprite.rect.right and sprite.rect.topysprite.rect.bottom:spriteGroup.remove(sprite)choose0else:choose0for sun in sunList:if sun.rect.collidepoint(position):sunList.remove(sun)textstr(int(text)50)sun_font pygame.font.SysFont(arial, 25)sun_num_surface sun_font.render(text, True, (0, 0, 0))pygame.display.update()if __name____main__:init() 在Pygame库中clock.tick(10)是一个用来控制游戏循环帧率的函数。这里的clock是pygame.time.Clock()的一个实例而tick()方法则是用来设定游戏循环的最大帧率。具体来说clock.tick(10)意味着你希望游戏循环每秒最多执行10次。这实际上是在说你希望游戏的帧率被限制在每秒10帧。然而需要注意的是如果游戏的某些部分如图形渲染或物理计算执行得比预期更慢那么实际的帧率可能会低于这个设定的上限。clock.tick()方法还会返回一个表示自上次调用以来经过的毫秒数的值。这个返回值可以用来测量游戏循环中不同部分的执行时间从而进行性能分析或优化。 pygame.sprite 是 Pygame 库中的一个模块它提供了处理游戏中精灵Sprite的便捷方式。精灵是游戏中的一个对象通常代表了一个角色、物体或任何其他可见的游戏元素。使用 pygame.sprite 模块你可以轻松地管理精灵的集合包括它们的渲染、更新和碰撞检测等。 在main方法通过动画的原理当快速连续地展示一系列静态图像时由于人眼的视觉暂留效应这些图像会在大脑中形成连续运动的错觉从而产生了动画的效果。 在这里主要实现了以下几个功能 1.创建背景图选项卡 2.启动背景音乐 3.创建敌人角色 4.鼠标拖动选项卡到指定位置创建我方人物 5.生产阳光发射子弹 6.碰撞检测 7.角色消失 2.敌人角色示例 代码如下示例 # -*- codeing utf-8 -*- # Time : 2023/2/14 16:00 # Author : 小马 # File: Zombie.py # Software : PyCharm import pygame.sprite import randomclass Zombie(pygame.sprite.Sprite):def __init__(self):super(Zombie,self).__init__()self.imagepygame.image.load(material/badman1.1.PNG).convert_alpha()self.images[pygame.image.load(material/badman1.{:d}.png.format(i)).convert_alpha() for i in range(1,6)]self.rect self.images[0].get_rect()t random.randint(1, 5)self.rect.top t * 100self.speed 6self.rect.left 1200self.blood1def update(self, *args):if self.blood0:self.imageself.images[args[0]%len(self.images)]if self.rect.left600:self.kill()else:self.rect.left - self.speedelse :self.kill() 这段代码定义了一个名为Zombie的类它继承自pygame.sprite.Sprite。Zombie类代表了一个游戏中的僵尸角色包含了僵尸的图像、位置、速度以及生命值等属性。 以下是Zombie类的主要组成部分 初始化方法 (init): 调用父类的初始化方法。 加载僵尸的图像并将其转换为包含alpha通道的图像即支持透明度的图像。 创建一个图像列表包含僵尸的不同动作或帧的图像。 设置僵尸的初始位置self.rect和速度self.speed。 初始化僵尸的生命值self.blood。 更新方法 (update): 检查僵尸的生命值如果生命值大于0则继续更新僵尸的状态。 根据传入的参数args[0]更新僵尸的图像以实现动画效果。 如果僵尸的rect.left属性小于600表示僵尸已经走出了屏幕范围此时调用self.kill()方法将僵尸从精灵组中移除。 如果僵尸的生命值不大于0也调用self.kill()方法将僵尸移除。 这个类可以用于创建一个或多个僵尸实例并将它们添加到一个pygame.sprite.Group中以便在游戏循环中更新和渲染它们。通过调用update方法可以更新僵尸的位置和动画帧而kill方法则用于在僵尸死亡或走出屏幕时将其从游戏中移除。 2.我方角色示例 # -*- codeing utf-8 -*- # Time : 2022/12/21 20:44 # Author : 小马 # File: Adc.py # Software : PyCharm import pygame class Adc(pygame.sprite.Sprite):def __init__(self,lasttime):super(Adc,self).__init__()self.imagepygame.image.load(material/character1.1.1.PNG).convert_alpha()self.images[pygame.image.load(material/character1.1.{:d}.PNG.format(i)).convert_alpha() for i in range(1,9)]self.rectself.images[0].get_rect()self.rect.top120self.rect.left480self.lasttimelasttimedef update(self,*args):if args[0]%60:iint(args[0]/8)self.imageself.images[i%len(self.images)]这段代码定义了一个名为Adc的类它继承自pygame.sprite.Sprite。Adc类代表了一个游戏中的角色具体来说是射手ADC角色包含了角色的图像、位置以及一个用于追踪时间的属性。 以下是Adc类的主要组成部分 初始化方法 (init): 调用父类的初始化方法。 加载角色的初始图像并将其转换为包含alpha通道的图像即支持透明度的图像。 创建一个图像列表包含角色的不同动作或帧的图像。 设置角色的初始位置self.rect。 初始化self.lasttime属性这个属性可能用于追踪上一次更新角色状态的时间。 更新方法 (update): 这个方法接收一个参数args它是一个元组其中args[0]可能代表游戏循环的当前帧或时间。 如果args[0]除以6的余数为0说明满足一定的时间间隔条件此时更新角色的图像。 通过计算i int(args[0]/8)来确定应该使用图像列表中的哪一张图像并使用i%len(self.images)来确保索引不会超出图像列表的范围。 这个类可以用于创建一个Adc实例并将它添加到一个pygame.sprite.Group中以便在游戏循环中更新和渲染它。通过调用update方法可以根据游戏循环的当前帧或时间来更新角色的图像从而实现动画效果。 总结 这款植物大战僵尸的魔改版本还有些许问题待处理没有设置游戏的结束游戏的平衡有待提高总共设定了四个我方游戏角色: 1.能够产生阳光的AP 2.两个可以发射子弹的ADC 3.一个近距离攻击的tank 设定了6个敌人大小不一的敌人角色选取了较为史诗宏壮的背景音乐视觉和听觉效果拉满可以用来作为自己的课程设计或者兴趣爱好。 整个作品的图片都是我个人裁剪制作而成有喜欢的小伙伴希望在下载使用的时候给我点一个star 代码链接 链接https://pan.baidu.com/s/1dhxHiE_CJJmg2ytUO4TW0Q?pwdyyv6 提取码yyv6 运行程序链接 https://gitee.com/majunlong1/Plants_vs_zooms_game
http://www.w-s-a.com/news/445979/

相关文章:

  • 怎样做网站外链supercell账号注册网站
  • 阿里巴巴网站是用什么技术做的哪些网站做推广比较好
  • 做网站go和python手机如何创网站
  • 网站开发进修网站做301将重定向到新域名
  • 公司网站开发费用账务处理ucenter wordpress
  • 六站合一的优势少儿编程机构
  • 软件开发与网站开发学做美食网站哪个好
  • 网站搜索 收录优化百度推广页面投放
  • 响应式网站的优点浙江省网站域名备案
  • 网站安全 扫描深圳被点名批评
  • 在哪个网站可以一对一做汉教网站优化策略
  • 龙岩做网站的顺企网宁波网站建设
  • 昆山网站建设河北连锁餐厅vi设计公司
  • 新蔡县住房和城乡建设局网站南昌租房网地宝网
  • 南宁做网站费用iis编辑网站绑定
  • 家用宽带做网站服务器建网站费用明细
  • 电商 网站 降低 跳出率 措施 效果书画院网站模板
  • 兰州移动官网网站建设上海工商网上公示系统
  • 在招聘网站里做电话销售免费空间可以上传网站吗
  • 梅州建站怎么做中国建设银行官网下载
  • 网站静态化设计广州网站备案方案
  • 西安网络技术有限公司网站扬中网站建设方案
  • 青海省教育厅门户网站wordpress core
  • idc科技公司网站模板蜜雪冰城网络营销案例分析
  • 微信与网站对接手机软件怎么做
  • 户县网站建设珠海专业制作网站
  • 麦当劳的网站优化建议猎头公司工作怎么样
  • 合肥地区网站制作网页浏览器打不开
  • 做网站的不给ftp网站如何做触屏滑动
  • wordpress statraq重庆百度优化