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

php网站开发的第三章wordpress 页面

php网站开发的第三章,wordpress 页面,天津教育学会网站建设,word还是wordpress贪吃蛇是一款经典的小游戏,最近尝试用Python实现它。先做一个基础版本实现以下目标: 1、做一个按钮,控制游戏开始 2、按Q键退出游戏 3、右上角显示一个记分牌 4、随机生成一个食物,蛇吃到食物后长度加一,得10分 5、蛇碰…

        贪吃蛇是一款经典的小游戏,最近尝试用Python实现它。先做一个基础版本实现以下目标:

        1、做一个按钮,控制游戏开始

        2、按Q键退出游戏

        3、右上角显示一个记分牌

        4、随机生成一个食物,蛇吃到食物后长度加一,得10分

        5、蛇碰到边缘,游戏结束

        6、蛇碰到自己,游戏结束

        主流程代码(gluttonous_snake.py)如下:

import sysimport pygame
import randomfrom settings import Settings
from snake import Snake
from game_stats import GameStats
from button import Button
from food import Food
from scoreboard import Scoreboardclass GluttonousSnake:""" 管理游戏资源和行为的类 """def __init__(self):""" 初始化游戏并创建游戏资源 """pygame.init()self.settings = Settings()self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))pygame.display.set_caption("贪吃蛇")# 创建一个用于存储游戏统计信息的实例self.stats = GameStats(self)# 创建记分牌self.sb = Scoreboard(self)self.food = Food(self)self.snakes = []self._create_snakes()# 创建Play按钮self.play_button = Button(self, "Play")def _create_snakes(self):""" 初始化创建长度为3的蛇 """for snake_number in range(3):self._create_snake(snake_number)def _create_snake(self, snake_number):""" 创建一段蛇身 """snake = Snake(self)self.screen_rect = self.screen.get_rect()snake.x = self.settings.screen_width / 2snake.y = self.settings.screen_height / 2 + snake_number * self.settings.snake_heightsnake.rect.x = snake.xsnake.rect.y = snake.yself.snakes.append(snake)def _check_events(self):# 监视键盘和鼠标的事件for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()elif event.type == pygame.KEYDOWN:self._check_keydown_events(event)elif event.type == pygame.MOUSEBUTTONDOWN:mouse_pos = pygame.mouse.get_pos()self._check_play_button(mouse_pos)def _check_play_button(self, mouse_pos):""" 在玩家单击Play按钮时开始新游戏 """button_clicked = self.play_button.rect.collidepoint(mouse_pos)if button_clicked and not self.stats.game_active:# 重置游戏设置self.stats.game_active = True# 隐藏鼠标光标pygame.mouse.set_visible(False)self.stats.score = 0self.sb.prep_score()self.settings.snake_direction = 'up'# 清空余下的蛇身self.snakes.clear()# 重新创建蛇身self._create_snakes()def _check_keydown_events(self, event):# 响应按键if event.key == pygame.K_RIGHT:if self.settings.snake_direction == 'up' or self.settings.snake_direction == 'down':self.settings.snake_direction = 'right'elif event.key == pygame.K_LEFT:if self.settings.snake_direction == 'up' or self.settings.snake_direction == 'down':self.settings.snake_direction = 'left'elif event.key == pygame.K_UP:if self.settings.snake_direction == 'right' or self.settings.snake_direction == 'left':self.settings.snake_direction = 'up'elif event.key == pygame.K_DOWN:if self.settings.snake_direction == 'right' or self.settings.snake_direction == 'left':self.settings.snake_direction = 'down'elif event.key == pygame.K_q:sys.exit()def _update_snakes(self):""" 更新蛇 """snake_head = self.snakes[0]self._create_snake_head(snake_head.rect.x, snake_head.rect.y)""" 检查是否吃到食物 """eat_food = self._check_eat_food()if not eat_food:self.snakes.pop()def _check_edges(self):""" 蛇碰到边缘时采取相应的措施 """snake_head = self.snakes[0]if snake_head.check_edges():self.stats.game_active = False# 显示鼠标光标pygame.mouse.set_visible(True)def _check_eat_self(self, snake_head):""" 是否碰到自己 """for snake in self.snakes:if snake.rect.colliderect(snake_head.rect):self.stats.game_active = False# 显示鼠标光标pygame.mouse.set_visible(True)breakdef _check_eat_food(self):""" 检测蛇吃到食物 """snake_head = self.snakes[0]food = self.foodif snake_head.rect.colliderect(food.rect):food.rect.x = round(random.randrange(20, self.settings.screen_width - self.settings.snake_width * 2) / 20.0) * 20.0food.rect.y = round(random.randrange(20, self.settings.screen_height - self.settings.snake_height * 2) / 20.0) * 20.0self.stats.score += self.settings.food_scoreself.sb.prep_score()return Trueelse:return Falsedef _create_snake_head(self, x, y):""" 创建蛇头 """snake = Snake(self)if self.settings.snake_direction == 'up':snake.x = xsnake.y = y - self.settings.snake_heightelif self.settings.snake_direction == 'down':snake.x = xsnake.y = y + self.settings.snake_heightelif self.settings.snake_direction == 'right':snake.x = x + self.settings.snake_widthsnake.y = yelif self.settings.snake_direction == 'left':snake.x = x - self.settings.snake_widthsnake.y = ysnake.rect.x = snake.xsnake.rect.y = snake.yself._check_eat_self(snake)self.snakes.insert(0, snake)def run_game(self):""" 开始游戏的主循环 """while True:self._check_events()if self.stats.game_active:if self.settings.update_count % 500 == 0: #控制游戏速度self._update_snakes()self._check_edges()self.settings.update_count = 0self.settings.update_count += 1self._update_screen()def _update_screen(self):# 每次循环时都会重绘屏幕self.screen.fill(self.settings.bg_color)self.food.draw_food()for snake in self.snakes:snake.draw_snake()# 如果游戏处于非活动状态,就绘制Play按钮if not self.stats.game_active:self.play_button.draw_button()# 显示得分self.sb.show_score()# 让最近绘制的屏幕可见pygame.display.flip()if __name__ == '__main__':# 创建实例并运行游戏ai = GluttonousSnake()ai.run_game()

        按钮类(button.py) :

import pygame.fontclass Button:def __init__(self, ai_game, msg):""" 初始化按钮的属性 """self.screen = ai_game.screenself.screen_rect = self.screen.get_rect()# 设置按钮的尺寸和其他属性self.width, self.height = 100, 50self.button_color = (0, 255, 0)self.text_color = (255, 255, 255)self.font = pygame.font.SysFont(None, 48)# 创建按钮的rect对象,并使其居中self.rect = pygame.Rect(0, 0, self.width, self.height)self.rect.center = self.screen_rect.centerself.rect.y = 100# 按钮的标签只需创建一次self._prep_msg(msg)def _prep_msg(self, msg):""" 将msg渲染为图像,并使其在按钮上居中 """self.msg_image = self.font.render(msg, True, self.text_color, self.button_color)self.msg_image_rect = self.msg_image.get_rect()self.msg_image_rect.center = self.rect.centerdef draw_button(self):# 绘制一个用颜色填充的按钮,再绘制文本self.screen.fill(self.button_color, self.rect)self.screen.blit(self.msg_image, self.msg_image_rect)

        食物类(food.py):

import pygameclass Food:def __init__(self, ai_game):""" 创建一个蛇身对象 """super().__init__()self.screen = ai_game.screenself.screen_rect = ai_game.screen.get_rect()self.settings = ai_game.settingsself.color = self.settings.food_color# 在(0,0)处创建一个表示食物的矩形,再设置正确的位置self.rect = pygame.Rect(0, 0, self.settings.food_width,self.settings.food_height)# 对于每个食物,都将其放在屏幕底部的中央self.rect.x = self.settings.screen_width / 2self.rect.y = self.settings.screen_height - 100# 在食物的属性x中存储小数值self.x = float(self.rect.x)# 存储用小数点表示的食物位置self.y = float(self.rect.y)def draw_food(self):""" 在屏幕上绘制食物 """pygame.draw.rect(self.screen, self.color, self.rect)

        游戏状态(game_stats.py):

class GameStats:""" 跟踪游戏的统计信息 """def __init__(self, ai_game):""" 初始化统计信息 """self.settings = ai_game.settingsself.reset_stats()# 游戏刚启动时处于非活动状态self.game_active = Falsedef reset_stats(self):""" 初始化在游戏运行期间可能变化的统计信息 """self.score = 0

        游戏设置(settings.py):

class Settings:def __init__(self):""" 初始化游戏的静态设置 """# 屏幕设置self.screen_width = 800self.screen_height = 600self.bg_color = (230, 230, 230)# 游戏设置self.update_count = 1# 蛇身设置self.snake_width = 20self.snake_height = 20self.snake_color = (0, 230, 0)self.snake_direction = 'up'# 食物设置self.food_width = 20self.food_height = 20self.food_color = (230, 0, 0)self.food_score = 10

        记分牌(scoreboard.py):

import pygame.font
from pygame.sprite import Groupclass Scoreboard:""" 显示得分信息的类 """def __init__(self, ai_game):""" 初始化显示得分涉及的属性 """self.ai_game = ai_gameself.screen = ai_game.screenself.screen_rect = self.screen.get_rect()self.settings = ai_game.settingsself.stats = ai_game.stats# 显示得分信息时使用的字体设置self.text_color = (30, 30, 30)self.font = pygame.font.SysFont(None, 48)# 准备初始得分的图像self.prep_score()def prep_score(self):""" 将得分转换为一副渲染的图像 """round_score = round(self.stats.score, -1)score_str = "{:,}".format(round_score)self.score_image = self.font.render(score_str, True,self.text_color, self.settings.bg_color)# 在屏幕右上角显示得分self.score_rect = self.score_image.get_rect()self.score_rect.right = self.screen_rect.right - 20self.score_rect.top = 20def show_score(self):""" 在屏幕上显示得分 """self.screen.blit(self.score_image, self.score_rect)

        蛇对象(snake.py):

import pygame
from pygame.sprite import Spriteclass Snake(Sprite):def __init__(self, ai_game):""" 创建一个蛇身对象 """super().__init__()self.screen = ai_game.screenself.screen_rect = ai_game.screen.get_rect()self.settings = ai_game.settingsself.color = self.settings.snake_color# 在(0,0)处创建一个表示一段蛇身的矩形,再设置正确的位置self.rect = pygame.Rect(0, 0, self.settings.snake_width,self.settings.snake_height)# 对于每段蛇身,都将其放在屏幕底部的中央self.rect.x = self.screen_rect.width + (self.settings.screen_width / 2)self.rect.y = self.screen_rect.height + (self.settings.screen_height / 2)# 在蛇身的属性x中存储小数值self.x = float(self.rect.x)# 存储用小数点表示的子弹位置self.y = float(self.rect.y)def draw_snake(self):""" 在屏幕上绘制蛇身 """pygame.draw.rect(self.screen, self.color, self.rect)def check_edges(self):""" 如果蛇位于屏幕边缘,就返回True """screen_rect = self.screen.get_rect()if self.rect.right >= screen_rect.right or self.rect.left <= 0 or self.rect.top <= 0 or self.rect.bottom >= screen_rect.bottom:return True

        运行游戏,下面是初始界面:

 

        蛇碰到边缘,游戏结束界面:

         蛇碰到自己,游戏结束界面:

        以上是一个基础版本的代码实现,后续将对代码进行优化并丰富游戏的功能。 

 

 

 

 

 


文章转载自:

http://zlddpZ6i.Lwgsk.cn
http://QnWbsGta.Lwgsk.cn
http://EvnkyXRR.Lwgsk.cn
http://CooGm4Ot.Lwgsk.cn
http://FyOI5Hr3.Lwgsk.cn
http://T1u781oJ.Lwgsk.cn
http://jZ5XGOl4.Lwgsk.cn
http://ydoIZ7qO.Lwgsk.cn
http://xMomx0OF.Lwgsk.cn
http://Li7FoInl.Lwgsk.cn
http://brtdWFW7.Lwgsk.cn
http://kDz18OXp.Lwgsk.cn
http://T8uYXALG.Lwgsk.cn
http://iKajuoDN.Lwgsk.cn
http://GNQ8sspj.Lwgsk.cn
http://Yohcv24p.Lwgsk.cn
http://qw8Cwpgz.Lwgsk.cn
http://oY5hr0RO.Lwgsk.cn
http://zsRmSXts.Lwgsk.cn
http://sCps6WOz.Lwgsk.cn
http://YqMQyMtQ.Lwgsk.cn
http://4NclquEc.Lwgsk.cn
http://gygerZBg.Lwgsk.cn
http://rUSY3kdo.Lwgsk.cn
http://GndF0ire.Lwgsk.cn
http://e71SOr36.Lwgsk.cn
http://x6mTv1SI.Lwgsk.cn
http://Pi2ITT3Z.Lwgsk.cn
http://gLdusLcn.Lwgsk.cn
http://3krFvRxd.Lwgsk.cn
http://www.dtcms.com/wzjs/665485.html

相关文章:

  • 可以在线做护理题的网站摄影网站设计论文
  • 公司网站做一年多少钱wordpress文章增加字段
  • 嘉定个人网站建设免费招商加盟代理
  • 建设部网站信息系统交通局网站建设方案
  • 顺德网站建设公司有哪些网站活动推广方案
  • 广东广州自己建网站公司wordpress账户
  • 佛山市网站建设分站企业网站设计 psd
  • 门户网站创新的方式有wordpress 来源统计
  • 上海外贸网站建设公司价格想学网站建设
  • 如何自己建设商城网站.net开发手机网站
  • 辽宁平台网站建设哪里好自贡网站平台开发
  • 用ps做网站画布一般建多大建外贸网站用什么主机
  • 珠海医疗网站建设公司排名企业网站建设项目计划书
  • 萧山建设局网站首页影楼行业网站
  • 朗域装饰口碑怎么样友情链接seo
  • 岳阳市网站建设推广门户网站建设基本情况
  • 建个电子商务网站多少钱网站开发nodejs
  • dede织梦php文章图片网站源码 完整后台 带在线音乐idea制作网站
  • 上海建设集团网站什么是seo优化的有哪些
  • 企业网站psd模板帝国cms 做网站地图
  • 珠海网站建设的公司排名杭州市建设信用网官网
  • 建设网站协议dw如何在网站做弹窗
  • 哪个网站可以接cad图纸做建筑设计网上课程
  • 做网站 做什么网站好外留网站建设
  • 企业网站建设费多少钱wordpress可以做cms吗
  • 做母婴网站赚钱网站域名实名认证查询
  • 做游戏交易网站有哪些福田欧曼配件大全
  • 国外一个专门做配乐的网站平台开发软件
  • 抚顺您做煮火锅网站富阳市建设局网站
  • 台州建站模板搭建已备案网站增加域名