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

机械加工网站易下拉大测iis添加网站主机名

机械加工网站易下拉大测,iis添加网站主机名,wordpress词典插件下载,纯静态网站是有什么程序做的炸弹人 炸弹人是童年的一款经典电子游戏#xff0c;玩家控制一个类似炸弹人的角色#xff0c;这个角色可以放置炸弹#xff0c;并在指定的时间内引爆它们消灭敌人以达到目标#xff0c;此游戏共设有两节关卡#xff0c;代码如下#xff1a; 运行效果#x…炸弹人 炸弹人是童年的一款经典电子游戏玩家控制一个类似炸弹人的角色这个角色可以放置炸弹并在指定的时间内引爆它们消灭敌人以达到目标此游戏共设有两节关卡代码如下 运行效果方向键控制上下左右, 点击空格键丢炸弹 一主程序 import sys import cfg import random import pygame from modules import *游戏主程序 def main(cfg):# 初始化pygame.init()pygame.mixer.init()pygame.mixer.music.load(cfg.BGMPATH)pygame.mixer.music.play(-1, 0.0)screen pygame.display.set_mode(cfg.SCREENSIZE)pygame.display.set_caption(炸弹人)# 开始界面Interface(screen, cfg, modegame_start)# 游戏主循环font pygame.font.SysFont(Consolas, 15)for gamemap_path in cfg.GAMEMAPPATHS:# -地图map_parser mapParser(gamemap_path, bg_pathscfg.BACKGROUNDPATHS, wall_pathscfg.WALLPATHS, blocksizecfg.BLOCKSIZE)# -水果fruit_sprite_group pygame.sprite.Group()used_spaces []for i in range(5):coordinate map_parser.randomGetSpace(used_spaces)used_spaces.append(coordinate)fruit_sprite_group.add(Fruit(random.choice(cfg.FRUITPATHS), coordinatecoordinate, blocksizecfg.BLOCKSIZE))# -我方Herocoordinate map_parser.randomGetSpace(used_spaces)used_spaces.append(coordinate)ourhero Hero(imagepathscfg.HEROZELDAPATHS, coordinatecoordinate, blocksizecfg.BLOCKSIZE, map_parsermap_parser, hero_nameZELDA)# -电脑Heroaihero_sprite_group pygame.sprite.Group()coordinate map_parser.randomGetSpace(used_spaces)aihero_sprite_group.add(Hero(imagepathscfg.HEROBATMANPATHS, coordinatecoordinate, blocksizecfg.BLOCKSIZE, map_parsermap_parser, hero_nameBATMAN))used_spaces.append(coordinate)coordinate map_parser.randomGetSpace(used_spaces)aihero_sprite_group.add(Hero(imagepathscfg.HERODKPATHS, coordinatecoordinate, blocksizecfg.BLOCKSIZE, map_parsermap_parser, hero_nameDK))used_spaces.append(coordinate)# -炸弹bombbomb_sprite_group pygame.sprite.Group()# -用于判断游戏胜利或者失败的flagis_win_flag False# -主循环screen pygame.display.set_mode(map_parser.screen_size)clock pygame.time.Clock()while True:dt clock.tick(cfg.FPS)for event in pygame.event.get():if event.type pygame.QUIT:pygame.quit()sys.exit(-1)# --↑↓←→键控制上下左右, 空格键丢炸弹elif event.type pygame.KEYDOWN:if event.key pygame.K_UP:ourhero.move(up)elif event.key pygame.K_DOWN:ourhero.move(down)elif event.key pygame.K_LEFT:ourhero.move(left)elif event.key pygame.K_RIGHT:ourhero.move(right)elif event.key pygame.K_SPACE:if ourhero.bomb_cooling_count 0:bomb_sprite_group.add(ourhero.generateBomb(imagepathcfg.BOMBPATH, digitalcolorcfg.YELLOW, explode_imagepathcfg.FIREPATH))screen.fill(cfg.WHITE)# --电脑Hero随机行动for hero in aihero_sprite_group:action, flag hero.randomAction(dt)if flag and action dropbomb:bomb_sprite_group.add(hero.generateBomb(imagepathcfg.BOMBPATH, digitalcolorcfg.YELLOW, explode_imagepathcfg.FIREPATH))# --吃到水果加生命值(只要是Hero, 都能加)ourhero.eatFruit(fruit_sprite_group)for hero in aihero_sprite_group:hero.eatFruit(fruit_sprite_group)# --游戏元素都绑定到屏幕上map_parser.draw(screen)for bomb in bomb_sprite_group:if not bomb.is_being:bomb_sprite_group.remove(bomb)explode_area bomb.draw(screen, dt, map_parser)if explode_area:# --爆炸火焰范围内的Hero生命值将持续下降if ourhero.coordinate in explode_area:ourhero.health_value - bomb.harm_valuefor hero in aihero_sprite_group:if hero.coordinate in explode_area:hero.health_value - bomb.harm_valuefruit_sprite_group.draw(screen)for hero in aihero_sprite_group:hero.draw(screen, dt)ourhero.draw(screen, dt)# --左上角显示生命值pos_x showText(screen, font, textourhero.hero_name(our):str(ourhero.health_value), colorcfg.YELLOW, position[5, 5])for hero in aihero_sprite_group:pos_x, pos_y pos_x15, 5pos_x showText(screen, font, texthero.hero_name(ai):str(hero.health_value), colorcfg.YELLOW, position[pos_x, pos_y])# --我方玩家生命值小于等于0/电脑方玩家生命值均小于等于0则判断游戏结束if ourhero.health_value 0:is_win_flag Falsebreakfor hero in aihero_sprite_group:if hero.health_value 0:aihero_sprite_group.remove(hero)if len(aihero_sprite_group) 0:is_win_flag Truebreakpygame.display.update()clock.tick(cfg.FPS)if is_win_flag:Interface(screen, cfg, modegame_switch)else:breakInterface(screen, cfg, modegame_end)run if __name__ __main__:while True:main(cfg)二配置文件 – cfg.py import os屏幕大小 SCREENSIZE (640, 480) 块大小 BLOCKSIZE 30 FPS FPS 30 游戏地图路径 GAMEMAPPATHS [os.path.join(os.getcwd(), path) for path in \[resources/maps/1.map, resources/maps/2.map]] 墙路径 WALLPATHS [os.path.join(os.getcwd(), path) for path in \[resources/images/misc/wall0.png, resources/images/misc/wall1.png, resources/images/misc/wall2.png]] 英雄路径 HERODKPATHS [os.path.join(os.getcwd(), path) for path in \[resources/images/dk/left.png, resources/images/dk/right.png, resources/images/dk/up.png, resources/images/dk/down.png]] HEROZELDAPATHS [os.path.join(os.getcwd(), path) for path in \[resources/images/zelda/left.png, resources/images/zelda/right.png, resources/images/zelda/up.png, resources/images/zelda/down.png]] HEROBATMANPATHS [os.path.join(os.getcwd(), path) for path in \[resources/images/batman/left.png, resources/images/batman/right.png, resources/images/batman/up.png, resources/images/batman/down.png]] 水果路径 FRUITPATHS [os.path.join(os.getcwd(), path) for path in \[resources/images/misc/banana.png, resources/images/misc/cherry.png]] 背景路径 BACKGROUNDPATHS [os.path.join(os.getcwd(), path) for path in \[resources/images/misc/bg0.png, resources/images/misc/bg1.png, resources/images/misc/bg2.png]] 爆炸和发射路径 BOMBPATH os.path.join(os.getcwd(), resources/images/misc/bomb.png) FIREPATH os.path.join(os.getcwd(), resources/images/misc/fire.png) 背景音乐 BGMPATH os.path.join(os.getcwd(), resources/audio/bgm.mp3) 一些颜色 YELLOW (255, 255, 0) BLUE (0, 0, 255) RED (255, 0, 0) BLACK (0, 0, 0) WHITE (255, 255, 255)三素材包 – resources 1audio文件 bgm.mps音乐大家自己去找然后设置就好 2images文件 图片太多了做不到全部放置大家根据配置文件自己去弄就好或者私信我我单独给大家发 3maps文件 #1.map xxxxxxxxxxxxx x00000000000x x0x0x0x0x0x0x x00000000000x x0x0x0x0x0x0x x00000000000x x0x0x0x0x0x0x x00000000000x x0x0x0x0x0x0x x00000000000x xxxxxxxxxxxxx#2.map 2222222222222222222222222 2wwwww2wwwww2wwwww2wwwww2 2222222222222222222222222 2zz2zz2x1x1x1x1x1x2zz2zz2 2zz2zz2111111111112zz2zz2 2222222x1x1x1x1x1x2222222 2wwwww2111111111112wwwww2 2222222x1x1x1x1x1x2222222 2zz2zz2111111111112zz2zz2 2zz2zz2x1x1x1x1x1x2zz2zz2 2222222222222222222222222 2wwwww2wwwww2wwwww2wwwww2 2222222222222222222222222四文件包 – modules 1__init__.py 初始化 from .MAP import mapParser from .misc import showText, Button, Interface from .Sprites import Wall, Background, Fruit, Bomb, Hero2MAP.py import random from .Sprites import *.map文件解析器 class mapParser():def __init__(self, mapfilepath, bg_paths, wall_paths, blocksize, **kwargs):self.instances_list self.__parse(mapfilepath)self.bg_paths bg_pathsself.wall_paths wall_pathsself.blocksize blocksizeself.height len(self.instances_list)self.width len(self.instances_list[0])self.screen_size (blocksize * self.width, blocksize * self.height)地图画到屏幕上def draw(self, screen):for j in range(self.height):for i in range(self.width):instance self.instances_list[j][i]if instance w:elem Wall(self.wall_paths[0], [i, j], self.blocksize)elif instance x:elem Wall(self.wall_paths[1], [i, j], self.blocksize)elif instance z:elem Wall(self.wall_paths[2], [i, j], self.blocksize)elif instance 0:elem Background(self.bg_paths[0], [i, j], self.blocksize)elif instance 1:elem Background(self.bg_paths[1], [i, j], self.blocksize)elif instance 2:elem Background(self.bg_paths[2], [i, j], self.blocksize)else:raise ValueError(instance parse error in mapParser.draw...)elem.draw(screen)随机获取一个空地def randomGetSpace(self, used_spacesNone):while True:i random.randint(0, self.width-1)j random.randint(0, self.height-1)coordinate [i, j]if used_spaces and coordinate in used_spaces:continueinstance self.instances_list[j][i]if instance in [0, 1, 2]:breakreturn coordinate根据坐标获取元素类型def getElemByCoordinate(self, coordinate):return self.instances_list[coordinate[1]][coordinate[0]]解析.map文件def __parse(self, mapfilepath):instances_list []with open(mapfilepath) as f:for line in f.readlines():instances_line_list []for c in line:if c in [w, x, z, 0, 1, 2]:instances_line_list.append(c)instances_list.append(instances_line_list)return instances_list3misc.py import sys import pygame在屏幕指定位置显示文字 def showText(screen, font, text, color, position):text_render font.render(text, True, color)rect text_render.get_rect()rect.left, rect.top positionscreen.blit(text_render, rect)return rect.right按钮 def Button(screen, position, text, buttoncolor(120, 120, 120), linecolor(20, 20, 20), textcolor(255, 255, 255), bwidth200, bheight50):left, top positionpygame.draw.line(screen, linecolor, (left, top), (leftbwidth, top), 5)pygame.draw.line(screen, linecolor, (left, top-2), (left, topbheight), 5)pygame.draw.line(screen, linecolor, (left, topbheight), (leftbwidth, topbheight), 5)pygame.draw.line(screen, linecolor, (leftbwidth, topbheight), (leftbwidth, top), 5)pygame.draw.rect(screen, buttoncolor, (left, top, bwidth, bheight))font pygame.font.SysFont(Consolas, 30)text_render font.render(text, 1, textcolor)rect text_render.get_rect()rect.centerx, rect.centery left bwidth / 2, top bheight / 2return screen.blit(text_render, rect)游戏开始/关卡切换/游戏结束界面 def Interface(screen, cfg, modegame_start):pygame.display.set_mode(cfg.SCREENSIZE)if mode game_start:clock pygame.time.Clock()while True:screen.fill((41, 36, 33))button_1 Button(screen, (220, 150), START)button_2 Button(screen, (220, 250), QUIT)for event in pygame.event.get():if event.type pygame.QUIT:pygame.quit()sys.exit(-1)elif event.type pygame.MOUSEBUTTONDOWN:if button_1.collidepoint(pygame.mouse.get_pos()):return Trueelif button_2.collidepoint(pygame.mouse.get_pos()):pygame.quit()sys.exit(-1)pygame.display.update()clock.tick(cfg.FPS)elif mode game_switch:clock pygame.time.Clock()while True:screen.fill((41, 36, 33))button_1 Button(screen, (220, 150), NEXT)button_2 Button(screen, (220, 250), QUIT)for event in pygame.event.get():if event.type pygame.QUIT:pygame.quit()sys.exit(-1)elif event.type pygame.MOUSEBUTTONDOWN:if button_1.collidepoint(pygame.mouse.get_pos()):return Trueelif button_2.collidepoint(pygame.mouse.get_pos()):pygame.quit()sys.exit(-1)pygame.display.update()clock.tick(cfg.FPS)elif mode game_end:clock pygame.time.Clock()while True:screen.fill((41, 36, 33))button_1 Button(screen, (220, 150), RESTART)button_2 Button(screen, (220, 250), QUIT)for event in pygame.event.get():if event.type pygame.QUIT:pygame.quit()sys.exit(-1)elif event.type pygame.MOUSEBUTTONDOWN:if button_1.collidepoint(pygame.mouse.get_pos()):return Trueelif button_2.collidepoint(pygame.mouse.get_pos()):pygame.quit()sys.exit(-1)pygame.display.update()clock.tick(cfg.FPS)else:raise ValueError(Interface.mode unsupport %s... % mode)4Sprites.py import copy import random import pygame墙类 class Wall(pygame.sprite.Sprite):def __init__(self, imagepath, coordinate, blocksize, **kwargs):pygame.sprite.Sprite.__init__(self)self.image pygame.image.load(imagepath)self.image pygame.transform.scale(self.image, (blocksize, blocksize))self.rect self.image.get_rect()self.rect.left, self.rect.top coordinate[0] * blocksize, coordinate[1] * blocksizeself.coordinate coordinateself.blocksize blocksize画到屏幕上def draw(self, screen):screen.blit(self.image, self.rect)return True背景类 class Background(pygame.sprite.Sprite):def __init__(self, imagepath, coordinate, blocksize, **kwargs):pygame.sprite.Sprite.__init__(self)self.image pygame.image.load(imagepath)self.image pygame.transform.scale(self.image, (blocksize, blocksize))self.rect self.image.get_rect()self.rect.left, self.rect.top coordinate[0] * blocksize, coordinate[1] * blocksizeself.coordinate coordinateself.blocksize blocksize画到屏幕上def draw(self, screen):screen.blit(self.image, self.rect)return True水果类 class Fruit(pygame.sprite.Sprite):def __init__(self, imagepath, coordinate, blocksize, **kwargs):pygame.sprite.Sprite.__init__(self)self.kind imagepath.split(/)[-1].split(.)[0]if self.kind banana:self.value 5elif self.kind cherry:self.value 10else:raise ValueError(Unknow fruit %s... % self.kind)self.image pygame.image.load(imagepath)self.image pygame.transform.scale(self.image, (blocksize, blocksize))self.rect self.image.get_rect()self.rect.left, self.rect.top coordinate[0] * blocksize, coordinate[1] * blocksizeself.coordinate coordinateself.blocksize blocksize画到屏幕上def draw(self, screen):screen.blit(self.image, self.rect)return True炸弹类 class Bomb(pygame.sprite.Sprite):def __init__(self, imagepath, coordinate, blocksize, digitalcolor, explode_imagepath, **kwargs):pygame.sprite.Sprite.__init__(self)self.image pygame.image.load(imagepath)self.image pygame.transform.scale(self.image, (blocksize, blocksize))self.explode_imagepath explode_imagepathself.rect self.image.get_rect()# 像素位置self.rect.left, self.rect.top coordinate[0] * blocksize, coordinate[1] * blocksize# 坐标(元素块为单位长度)self.coordinate coordinateself.blocksize blocksize# 爆炸倒计时self.explode_millisecond 6000 * 1 - 1self.explode_second int(self.explode_millisecond / 1000)self.start_explode False# 爆炸持续时间self.exploding_count 1000 * 1# 炸弹伤害能力self.harm_value 1# 该炸弹是否还存在self.is_being Trueself.font pygame.font.SysFont(Consolas, 20)self.digitalcolor digitalcolor画到屏幕上def draw(self, screen, dt, map_parser):if not self.start_explode:# 爆炸倒计时self.explode_millisecond - dtself.explode_second int(self.explode_millisecond / 1000)if self.explode_millisecond 0:self.start_explode Truescreen.blit(self.image, self.rect)text self.font.render(str(self.explode_second), True, self.digitalcolor)rect text.get_rect(center(self.rect.centerx-5, self.rect.centery5))screen.blit(text, rect)return Falseelse:# 爆炸持续倒计时self.exploding_count - dtif self.exploding_count 0:return self.__explode(screen, map_parser)else:self.is_being Falsereturn False爆炸效果def __explode(self, screen, map_parser):explode_area self.__calcExplodeArea(map_parser.instances_list)for each in explode_area:image pygame.image.load(self.explode_imagepath)image pygame.transform.scale(image, (self.blocksize, self.blocksize))rect image.get_rect()rect.left, rect.top each[0] * self.blocksize, each[1] * self.blocksizescreen.blit(image, rect)return explode_area计算爆炸区域def __calcExplodeArea(self, instances_list):explode_area []# 区域计算规则为墙可以阻止爆炸扩散, 且爆炸范围仅在游戏地图范围内for ymin in range(self.coordinate[1], self.coordinate[1]-5, -1):if ymin 0 or instances_list[ymin][self.coordinate[0]] in [w, x, z]:breakexplode_area.append([self.coordinate[0], ymin])for ymax in range(self.coordinate[1]1, self.coordinate[1]5):if ymax len(instances_list) or instances_list[ymax][self.coordinate[0]] in [w, x, z]:breakexplode_area.append([self.coordinate[0], ymax])for xmin in range(self.coordinate[0], self.coordinate[0]-5, -1):if xmin 0 or instances_list[self.coordinate[1]][xmin] in [w, x, z]:breakexplode_area.append([xmin, self.coordinate[1]])for xmax in range(self.coordinate[0]1, self.coordinate[0]5):if xmax len(instances_list[0]) or instances_list[self.coordinate[1]][xmax] in [w, x, z]:breakexplode_area.append([xmax, self.coordinate[1]])return explode_area角色类 class Hero(pygame.sprite.Sprite):def __init__(self, imagepaths, coordinate, blocksize, map_parser, **kwargs):pygame.sprite.Sprite.__init__(self)self.imagepaths imagepathsself.image pygame.image.load(imagepaths[-1])self.image pygame.transform.scale(self.image, (blocksize, blocksize))self.rect self.image.get_rect()self.rect.left, self.rect.top coordinate[0] * blocksize, coordinate[1] * blocksizeself.coordinate coordinateself.blocksize blocksizeself.map_parser map_parserself.hero_name kwargs.get(hero_name)# 生命值self.health_value 50# 炸弹冷却时间self.bomb_cooling_time 5000self.bomb_cooling_count 0# 随机移动冷却时间(仅AI电脑用)self.randommove_cooling_time 100self.randommove_cooling_count 0角色移动def move(self, direction):self.__updateImage(direction)if direction left:if self.coordinate[0]-1 0 or self.map_parser.getElemByCoordinate([self.coordinate[0]-1, self.coordinate[1]]) in [w, x, z]:return Falseself.coordinate[0] self.coordinate[0] - 1elif direction right:if self.coordinate[0]1 self.map_parser.width or self.map_parser.getElemByCoordinate([self.coordinate[0]1, self.coordinate[1]]) in [w, x, z]:return Falseself.coordinate[0] self.coordinate[0] 1elif direction up:if self.coordinate[1]-1 0 or self.map_parser.getElemByCoordinate([self.coordinate[0], self.coordinate[1]-1]) in [w, x, z]:return Falseself.coordinate[1] self.coordinate[1] - 1elif direction down:if self.coordinate[1]1 self.map_parser.height or self.map_parser.getElemByCoordinate([self.coordinate[0], self.coordinate[1]1]) in [w, x, z]:return Falseself.coordinate[1] self.coordinate[1] 1else:raise ValueError(Unknow direction %s... % direction)self.rect.left, self.rect.top self.coordinate[0] * self.blocksize, self.coordinate[1] * self.blocksizereturn True随机行动(AI电脑用)def randomAction(self, dt):# 冷却倒计时if self.randommove_cooling_count 0:self.randommove_cooling_count - dtaction random.choice([left, left, right, right, up, up, down, down, dropbomb])flag Falseif action in [left, right, up, down]:if self.randommove_cooling_count 0:flag Trueself.move(action)self.randommove_cooling_count self.randommove_cooling_timeelif action in [dropbomb]:if self.bomb_cooling_count 0:flag Trueself.bomb_cooling_count self.bomb_cooling_timereturn action, flag生成炸弹def generateBomb(self, imagepath, digitalcolor, explode_imagepath):return Bomb(imagepathimagepath, coordinatecopy.deepcopy(self.coordinate), blocksizeself.blocksize, digitalcolordigitalcolor, explode_imagepathexplode_imagepath)画到屏幕上def draw(self, screen, dt):# 冷却倒计时if self.bomb_cooling_count 0:self.bomb_cooling_count - dtscreen.blit(self.image, self.rect)return True吃水果def eatFruit(self, fruit_sprite_group):eaten_fruit pygame.sprite.spritecollide(self, fruit_sprite_group, True, None)for fruit in eaten_fruit:self.health_value fruit.value更新角色朝向def __updateImage(self, direction):directions [left, right, up, down]idx directions.index(direction)self.image pygame.image.load(self.imagepaths[idx])self.image pygame.transform.scale(self.image, (self.blocksize, self.blocksize))
http://www.dnsts.com.cn/news/181054.html

相关文章:

  • 县市区没有建设信用网站和平台小说网站怎么建设
  • 摄图网的图片可以做网站吗前端小程序开发流程
  • 设计的网站有哪些三只松鼠营销策划书
  • 网站功能定制合同5元域名免备案
  • 东网站建设宿州市建设局网站
  • 做镜像网站利润网站建设用款
  • 网站规划设计是什么样的网站首页效果图怎么做
  • 国家住房和城乡建设部官方网站政务网站群建设需求调研表
  • 食品 网站源码黑龙江省建设厅
  • 教育学校网站做一般纳税人企业所得税怎么征收
  • 菜鸟移动端网站开发收款 wordpress
  • 彭干泉 网站开发宝山专业做网站
  • com网站域名注册外贸网站如何做的好
  • 1688网站的特点官方网站怎么注册
  • 朗格手表网站淮安做网站seo
  • 做网站时分类标题和分类描述机械设备做公司网站
  • 郑州免费做网站的自己制作的网站怎么发布
  • 河南建设集团网站温州快建网站建设
  • wordpress可以仿任何站sem与seo的区别
  • 古装摄影网站建设方案零基础学全屋定制设计
  • 网站建设有哪些费用wordpress 设置关键字
  • 网站建设需要多少资金宠物网站建设目标
  • 内网专线和外网专线区别佛山厂家推广优化
  • 备案的网站名与公司名称软件项目网站建设实验报告
  • 商城网站模板 免费唐山微信小程序开发公司
  • 网站机房建设流程成都做公司网站
  • 网网站制作开发怎么在网上查网站空间是双线还是单线
  • 国外网页素材网站适合做装饰公司的名字
  • 中国网站建设的利弊郑州建立网站
  • 成华区建设局质检站网站做企业官网的流程