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

建网站工具微信app小程序开发

建网站工具,微信app小程序开发,网站建设 宁夏,推广公司的广告语今天我们开始Pygame的第六课,前几节课的内容在这里【点我】,欢迎大家前去考古: 今天我们一起来学习制作一个小游戏【贪吃蛇】,这是一个非常经典的小游戏,那么我们一起开始吧 1、游戏准备工作 import pygame, random,o…

今天我们开始Pygame的第六课,前几节课的内容在这里【点我】,欢迎大家前去考古:

在这里插入图片描述

今天我们一起来学习制作一个小游戏【贪吃蛇】,这是一个非常经典的小游戏,那么我们一起开始吧

请添加图片描述

1、游戏准备工作

import pygame, random,os  # 导入pygame模块和random、os模块os.environ["SDL_VIDEO_WINDOW_POS"]="100,100"  # 设置环境变量,设置窗口的位置在屏幕左上角(100,100)的位置pygame.init()  # 初始化pygametime_clock = pygame.time.Clock()  # 创建一个Clock对象用于控制游戏的速度sc = pygame.display.set_mode((640, 480))  # 创建一个窗口,大小为640x480像素
pygame.display.set_caption("贪吃蛇")  # 设置窗口标题为“贪吃蛇”font = pygame.font.SysFont("宋体", 48 , True)  # 创建一个字体对象,字体为宋体,大小为48像素,加粗显示pink = (255, 182, 193)  # 定义颜色pink为RGB值(255, 182, 193)
violet = (238,130,238)  # 定义颜色violet为RGB值(238,130,238)
white = (255, 255, 255)  # 定义颜色white为RGB值(255, 255, 255)
green = (0,255,0)  # 定义颜色green为RGB值(0,255,0)
red = (255,0,0)  # 定义颜色red为RGB值(255,0,0)

这里的代码每一行都加了注释

os.environ["SDL_VIDEO_WINDOW_POS"]="100,100":这一行是指运行代码时,Pygame以左上角 的初始位置

time_clock = pygame.time.Clock() : 创建一个Clock对象用于控制游戏的速度

2、接下来我们创建一个 【贪吃蛇】类

class Snake():def __init__(self):self.direction = "right"# 定义一个贪吃蛇的长度列表,其中有几个元素就代表有几段身体self.body = [[100, 100], [80, 100]]self.head = list(self.body[0])  # 蛇头位置def draw_me(self):# 绘制身体for b in self.body:pygame.draw.rect(sc, green, (b[0], b[1], 20, 20))def move_head(self):# 根据方向移动蛇头if self.direction == "right":self.head[0] += 20elif self.direction == "left":self.head[0] -= 20elif self.direction == "up":self.head[1] -= 20elif self.direction == "down":self.head[1] += 20def add_body(self):self.body.insert(0, list(self.head))def cut_tail(self):self.body.pop()def move_snake(self):self.add_body()self.cut_tail()

代码注释:

self.direction = "right":指【贪吃蛇】出生时的初始方向

self.body = [[100, 100], [80, 100]]:初始的小方格坐标(以左上角为原点)

self.head = list(self.body[0]) # 蛇头位置,蛇头的坐标

函数【draw_me】,利用*pygame.draw.rect(sc, green, (b[0], b[1], 20, 20))*,这个在第三节课中有讲过:点我复习第三节课

函数【move_head】,移动函数,左右移动和X轴有关系,所以代码里取头的*head[0],上下移动和Y轴有关系,所以代码里取头的head[1]*

函数【add_body】:增加身体的小方格,这个是吃到食物调用的函数

函数【cut_tail】:这个是删除尾巴的小方格

函数【move_snake】,这个函数中调用了【add_bodycut_tail】,头加一个,尾巴减一个,头加一个,尾巴减一个,头加一个,尾巴减一个…,这就是移动

3、接下来我们创建一个 【贪吃蛇】类

# 食物类的设计
class Food():def __init__(self):self.color=white#知识进阶-双倍奖励#self.color=random.choice([white,pink])x = random.randrange(0, 640,20)y = random.randrange(0, 480,20)self.postion = [x,y]def draw_me(self):pygame.draw.rect(sc, self.color, (self.postion[0], self.postion[1], 20, 20))def reset(self):x = random.randrange(0, 640,20)y = random.randrange(0, 480,20)self.postion = [x,y]#知识进阶-双倍奖励#self.color=random.choice([white,pink])

代码注释

self.color=white,食物初始颜色是白色

x = random.randrange(0, 640,20)y = random.randrange(0, 480,20),这是指食物不可超过游戏的界面大小,X轴在0到640步长为20,Y轴上为0到480步长为20,都是随机的

知识进阶-双倍奖励 self.color=random.choice([white,pink]),颜色可随机挑选

4、收尾

food = Food()
snake = Snake()
while True:len_text = font.render("Length:  "+str(len(snake.body)),True,red)# 从队列中获取事件for event in pygame.event.get():# 判断是否为退出事件if event.type == pygame.QUIT:pygame.quit()# 按键事件elif event.type == pygame.KEYDOWN:if event.key == pygame.K_RIGHT:if  snake.direction != "left":snake.direction = "right"if event.key == pygame.K_LEFT:if snake.direction != "right":snake.direction = "left"if event.key == pygame.K_UP:if  snake.direction != "down":snake.direction = "up"if event.key == pygame.K_DOWN:if snake.direction != "up":snake.direction = "down"# 判断是否吃到食物if snake.head == food.postion:food.reset()snake.add_body()'''#知识进阶-双倍奖励if food.color==white:food.reset()snake.add_body()else:food.reset()snake.add_body()snake.add_body()'''# 判断是否碰到边缘if snake.head[0] > 620 or snake.head[0] < 0:breakif snake.head[1] > 460 or snake.head[1] < 0:break# 移动头部和身体snake.move_head()snake.move_snake()# 绘制游戏界面sc.fill(violet)snake.draw_me()food.draw_me()sc.blit(len_text ,(50,20))pygame.display.update()# 控制游戏速度time_clock.tick(3)
# 动手实践-GAME OVER
len_text = font.render("GAME OVER",True,red)
sc.blit(len_text ,(200,200))
pygame.display.update()
input()

代码注释

# 判断是否碰到边缘,这是判断小蛇是否移动出窗口的外面,否则就停止游戏

if snake.head[0] > 620 or snake.head[0] < 0:break
if snake.head[1] > 460 or snake.head[1] < 0:break

sc.fill(violet):游戏背景颜色,可以自己更换

time_clock.tick(3): 控制游戏速度 控制游戏速度,越大越快

5、完整版代码:

import pygame, random,os
os.environ["SDL_VIDEO_WINDOW_POS"]="100,100"
# 初始化
pygame.init()
# 定义一个变量来控制速度
time_clock = pygame.time.Clock()# 创建窗口,定义标题
sc = pygame.display.set_mode((640, 480))
pygame.display.set_caption("贪吃蛇")
# 实例化字体对象
font = pygame.font.SysFont("宋体", 48 , True)
# 定义颜色
pink = (255, 182, 193)
violet = (238,130,238)
white = (255, 255, 255)
green = (0,255,0)
red = (255,0,0)
class Snake():def __init__(self):self.direction = "right"# 定义一个贪吃蛇的长度列表,其中有几个元素就代表有几段身体self.body = [[100, 100], [80, 100]]self.head = list(self.body[0])  # 蛇头位置def draw_me(self):# 绘制身体for b in self.body:pygame.draw.rect(sc, green, (b[0], b[1], 20, 20))def move_head(self):# 根据方向移动蛇头if self.direction == "right":self.head[0] += 20elif self.direction == "left":self.head[0] -= 20elif self.direction == "up":self.head[1] -= 20elif self.direction == "down":self.head[1] += 20def add_body(self):self.body.insert(0, list(self.head))def cut_tail(self):self.body.pop()def move_snake(self):self.add_body()self.cut_tail()# 食物类的设计
class Food():def __init__(self):self.color=white#知识进阶-双倍奖励#self.color=random.choice([white,pink])x = random.randrange(0, 640,20)y = random.randrange(0, 480,20)self.postion = [x,y]def draw_me(self):pygame.draw.rect(sc, self.color, (self.postion[0], self.postion[1], 20, 20))def reset(self):x = random.randrange(0, 640,20)y = random.randrange(0, 480,20)self.postion = [x,y]#知识进阶-双倍奖励#self.color=random.choice([white,pink])food = Food()
snake = Snake()
while True:len_text = font.render("Length:  "+str(len(snake.body)),True,red)# 从队列中获取事件for event in pygame.event.get():# 判断是否为退出事件if event.type == pygame.QUIT:pygame.quit()# 按键事件elif event.type == pygame.KEYDOWN:if event.key == pygame.K_RIGHT:if  snake.direction != "left":snake.direction = "right"if event.key == pygame.K_LEFT:if snake.direction != "right":snake.direction = "left"if event.key == pygame.K_UP:if  snake.direction != "down":snake.direction = "up"if event.key == pygame.K_DOWN:if snake.direction != "up":snake.direction = "down"# 判断是否吃到食物if snake.head == food.postion:food.reset()snake.add_body()'''#知识进阶-双倍奖励if food.color==white:food.reset()snake.add_body()else:food.reset()snake.add_body()snake.add_body()'''# 判断是否碰到边缘if snake.head[0] > 620 or snake.head[0] < 0:breakif snake.head[1] > 460 or snake.head[1] < 0:break# 移动头部和身体snake.move_head()snake.move_snake()# 绘制游戏界面sc.fill(violet)snake.draw_me()food.draw_me()sc.blit(len_text ,(50,20))pygame.display.update()# 控制游戏速度time_clock.tick(3)
# 动手实践-GAME OVER
len_text = font.render("GAME OVER",True,red)
sc.blit(len_text ,(200,200))
pygame.display.update()
input()

希望对大家有帮助

致力于办公自动化的小小程序员一枚#

都看到这了,关注+点赞+收藏=不迷路!!

如果你想知道更多关于Python办公自动化的知识各位大佬给个关注吧!

http://www.dinnco.com/news/85196.html

相关文章:

  • 网站建设内链安卓手机游戏优化器
  • 成都科技网站建设哪里有广告推广公司
  • 网站和域名区别游戏推广员是诈骗吗
  • 网站建设制作ppt网站域名解析ip
  • 公司网站建设费用估计查关键词排名工具app
  • 网页制作和网站制作有什么区别南京seo关键词排名
  • wordpress 批量删除文章赣州seo公司
  • b2c购物网站前台代码百度推广首页登录
  • 上国外网站 dns灰色行业关键词推广
  • 综合网站开发实训总结网络营销买什么好
  • 北京营业执照代办公司广东搜索引擎优化
  • 网站备案靠谱吗今日时政新闻
  • 网站定制开发哪家厉害网络营销首先要
  • 腾讯云手动搭建wordpress个人站点网络营销的方法有哪些
  • 用discuz做的门户网站无锡百度推广开户
  • 派出所网站免费源代码新区seo整站优化公司
  • 苏州做网站的公司排名营销策划方案
  • 做跨境网站注意事项如何做宣传推广效果最好
  • 网站开发国内现状百度快照优化排名怎么做
  • 做篮球网站用的背景图片合肥搜索引擎推广
  • 大连零基础网站建设教学培训seo优化 搜 盈seo公司
  • 公司做铸造的招聘网站都有哪些网络营销有哪些手段
  • 网站 设计 文档产品推广方式及推广计划
  • 网站开发入门培训机构种子搜索引擎在线
  • 用什么软件可以做网站整站优化关键词排名
  • 无忧网站建设公司单页网站
  • 广州哪家公司做网站软文广告案例
  • 网站布局设计创意建站模板哪个好
  • 网站建设项目报告书seo按天计费系统
  • java网站建设技术参数怎么做表格