Python 在pygame中,将图像分插到作为网格一部分的磁贴上 用户定义函数 def主: 初始化所有pygame模块,有些模块需要初始化 pygame.init 创建pygame显示窗口 pygame.display.set_mode500400 设置显示窗口的标题 pygame.display.set_标题“内存” 获取显示表面 w_surface=pygame.display.get_surface 创建一个游戏对象 game=Gamew_曲面 通过调用游戏上的play方法启动主游戏循环 对象 游戏 退出pygame并清理pygame窗口 pygame.退出 用户定义类 班级游戏: 此类中的对象表示一个完整的游戏。 定义初始自组织,表面: 初始化游戏。 -self是需要初始化的游戏 -曲面是显示窗口曲面对象 self.surface=曲面 self.bg_color=pygame.color'black' self.FPS=60 self.game\u Clock=pygame.time.Clock self.close\u clicked=False self.continue\u game=True 瓷砖表面自整面 网格大小=4 self.create\u gridgrid\u大小 def创建网格自身,网格大小: 创建大小为grid_size x grid_size的平铺网格。 self.grid=[] 这个for循环创建网格中的每一行 对于rangegrid\u大小中的行数: 新建行=self.create行数,网格大小 self.grid.appendnew_行 def create_rowself,行数,大小: 在网格中创建一行。每行包含大小平铺。A. 行数为 用于计算屏幕上磁贴的x、y坐标 -row_num:正在创建的网格的第n行 -大小:行中的平铺数 返回新创建的行的名称 image_1=pygame.image.load'image1.bmp' image_2=pygame.image.load'image2.bmp' image\u 3=pygame.image.load'image3.bmp' image_4=pygame.image.load'image4.bmp' image_5=pygame.image.load'image5.bmp' image_6=pygame.image.load'image6.bmp' image_7=pygame.image.load'image7.bmp' image_8=pygame.image.load'image8.bmp' pygame_图像_曲面=[] pygame_图像_曲面。追加图像_1 pygame_图像_曲面。追加图像_2 pygame_图像_曲面。追加图像_3 pygame_图像_曲面。附加图像_4 pygame_图像_曲面。附加图像_5 pygame_图像_曲面。追加图像_6 pygame_image_surfaces.appendimage_7 pygame_图像_曲面。追加图像_8 pygame_图像_曲面=pygame_图像_曲面+pygame_图像_曲面 random.shufflepygame\u图像\u曲面 image\u surfaces=pygame\u image\u surfaces 平铺高度=self.surface.get\u高度//大小 平铺宽度=3/4*self.surface.get\u宽度//大小 一行=[] 对于rangesize中的col_num: y=行数*平铺高度 x=列数*平铺宽度 pos=x,y 一块瓷砖=瓷砖、瓷砖宽度、瓷砖高度 i=0 内容=图像\曲面[i] i+=1 一个tile.set\u内容 一行。附加一块瓦片 返回一行 def playself: 玩游戏直到玩家按下关闭框。 -自我是一种游戏,该继续还是不该继续。 而不是self.close_点击:直到玩家点击关闭框 游戏框架 self.handle\u事件 自画 如果self.continue\u游戏: 自我更新 自行决定 self.game_Clock.tickself.FPS最多使用FPS帧运行 每秒 def处理事件本身: 通过更改游戏状态来处理每个用户事件 适当地。 -赛尔夫是一个事件将被处理的游戏 events=pygame.event.get 对于事件中的事件: 如果event.type==pygame.QUIT: self.close\u clicked=True 如果event.type==pygame.MOUSEBUTTONDOWN: self.handle\u鼠标\u单击事件 def句柄\鼠标\单击自身,事件: 对屏幕上的鼠标点击作出响应;这意味着要改变现状 如果互动程序为空,则为其内容。 在+strevent.pos上单击了打印屏幕 def drawself: 绘制所有游戏对象。 -赛尔夫是要抽签的游戏 self.surface.fillself.bg_颜色清除显示表面 第一 对于self.grid中的行: 对于行中的瓷砖: 平铺 pygame.display.update使更新后的曲面显示在屏幕上 def更新自我: 更新下一帧的游戏对象。 -self是需要更新的游戏 通过 决定是否继续自己: 检查并记住游戏是否应该继续 -自我是需要检查的游戏 返回真值 类别磁贴: 平铺表示栅格上的一个位置。磁贴保存内容 类所有平铺共有的属性 表面=无 fg_color=pygame.Colorwhite bg_color=pygame.Colorblack 边框宽度=3 @类方法 def设置_表面,表面: 设置类属性“曲面” cls.surface=曲面 定义初始自身、屏幕位置、宽度、高度: 初始化Tile类的一个实例。瓷砖代表 我们董事会中的一个“职位”。 -self:正在初始化的磁贴 -屏幕位置:绘制瓷砖的[x,y]坐标 -宽度:瓷砖的宽度 -高度:瓷砖的高度 self.screen\u position=屏幕位置 self.content= 创建一个定义边界的矩形 x、 y=屏幕位置 self.rect=pygame.Rectx,y,宽度,高度 def draw_contentself: image_1=pygame.image.load'image1.bmp' image_2=pygame.image.load'image2.bmp' image\u 3=pygame.image.load'image3.bmp' image_4=pygame.image.load'image4.bmp' image_5=pygame.image.load'image5.bmp' image_6=pygame.image.load'image6.bmp' image_7=pygame.image.load'image7.bmp' image_8=pygame.image.load'image8.bmp' pygame_图像_曲面=[] pygame_图像_曲面。追加图像_1 pygame_图像_曲面。追加图像_2 pygame_图像_曲面。追加图像_3 pygame_图像_曲面。附加图像_4 pygame_图像_曲面。附加图像_5 pygame_图像_曲面。追加图像_6 pygame_image_surfaces.appendimage_7 pygame_图像_曲面。追加图像_8 pygame_图像_曲面=pygame_图像_曲面+pygame_图像_曲面 random.shufflepygame\u图像\u曲面 image\u surfaces=pygame\u image\u surfaces 对于rangelenimage_曲面中的i: 瓦片 Tile.surface.blittext\u图像,文本\u位置 def drawself: 将瓷砖的内容绘制到其表面。 -self:正在绘制的瓷砖 自绘制内容 pygame.draw.rectile.surface,Tile.fg_color,self.rect, 瓷砖.边框宽度 def设置内容自身,新内容: -self:其内容正在更新的互动程序 self.content=新内容 主要的

Python 在pygame中,将图像分插到作为网格一部分的磁贴上 用户定义函数 def主: 初始化所有pygame模块,有些模块需要初始化 pygame.init 创建pygame显示窗口 pygame.display.set_mode500400 设置显示窗口的标题 pygame.display.set_标题“内存” 获取显示表面 w_surface=pygame.display.get_surface 创建一个游戏对象 game=Gamew_曲面 通过调用游戏上的play方法启动主游戏循环 对象 游戏 退出pygame并清理pygame窗口 pygame.退出 用户定义类 班级游戏: 此类中的对象表示一个完整的游戏。 定义初始自组织,表面: 初始化游戏。 -self是需要初始化的游戏 -曲面是显示窗口曲面对象 self.surface=曲面 self.bg_color=pygame.color'black' self.FPS=60 self.game\u Clock=pygame.time.Clock self.close\u clicked=False self.continue\u game=True 瓷砖表面自整面 网格大小=4 self.create\u gridgrid\u大小 def创建网格自身,网格大小: 创建大小为grid_size x grid_size的平铺网格。 self.grid=[] 这个for循环创建网格中的每一行 对于rangegrid\u大小中的行数: 新建行=self.create行数,网格大小 self.grid.appendnew_行 def create_rowself,行数,大小: 在网格中创建一行。每行包含大小平铺。A. 行数为 用于计算屏幕上磁贴的x、y坐标 -row_num:正在创建的网格的第n行 -大小:行中的平铺数 返回新创建的行的名称 image_1=pygame.image.load'image1.bmp' image_2=pygame.image.load'image2.bmp' image\u 3=pygame.image.load'image3.bmp' image_4=pygame.image.load'image4.bmp' image_5=pygame.image.load'image5.bmp' image_6=pygame.image.load'image6.bmp' image_7=pygame.image.load'image7.bmp' image_8=pygame.image.load'image8.bmp' pygame_图像_曲面=[] pygame_图像_曲面。追加图像_1 pygame_图像_曲面。追加图像_2 pygame_图像_曲面。追加图像_3 pygame_图像_曲面。附加图像_4 pygame_图像_曲面。附加图像_5 pygame_图像_曲面。追加图像_6 pygame_image_surfaces.appendimage_7 pygame_图像_曲面。追加图像_8 pygame_图像_曲面=pygame_图像_曲面+pygame_图像_曲面 random.shufflepygame\u图像\u曲面 image\u surfaces=pygame\u image\u surfaces 平铺高度=self.surface.get\u高度//大小 平铺宽度=3/4*self.surface.get\u宽度//大小 一行=[] 对于rangesize中的col_num: y=行数*平铺高度 x=列数*平铺宽度 pos=x,y 一块瓷砖=瓷砖、瓷砖宽度、瓷砖高度 i=0 内容=图像\曲面[i] i+=1 一个tile.set\u内容 一行。附加一块瓦片 返回一行 def playself: 玩游戏直到玩家按下关闭框。 -自我是一种游戏,该继续还是不该继续。 而不是self.close_点击:直到玩家点击关闭框 游戏框架 self.handle\u事件 自画 如果self.continue\u游戏: 自我更新 自行决定 self.game_Clock.tickself.FPS最多使用FPS帧运行 每秒 def处理事件本身: 通过更改游戏状态来处理每个用户事件 适当地。 -赛尔夫是一个事件将被处理的游戏 events=pygame.event.get 对于事件中的事件: 如果event.type==pygame.QUIT: self.close\u clicked=True 如果event.type==pygame.MOUSEBUTTONDOWN: self.handle\u鼠标\u单击事件 def句柄\鼠标\单击自身,事件: 对屏幕上的鼠标点击作出响应;这意味着要改变现状 如果互动程序为空,则为其内容。 在+strevent.pos上单击了打印屏幕 def drawself: 绘制所有游戏对象。 -赛尔夫是要抽签的游戏 self.surface.fillself.bg_颜色清除显示表面 第一 对于self.grid中的行: 对于行中的瓷砖: 平铺 pygame.display.update使更新后的曲面显示在屏幕上 def更新自我: 更新下一帧的游戏对象。 -self是需要更新的游戏 通过 决定是否继续自己: 检查并记住游戏是否应该继续 -自我是需要检查的游戏 返回真值 类别磁贴: 平铺表示栅格上的一个位置。磁贴保存内容 类所有平铺共有的属性 表面=无 fg_color=pygame.Colorwhite bg_color=pygame.Colorblack 边框宽度=3 @类方法 def设置_表面,表面: 设置类属性“曲面” cls.surface=曲面 定义初始自身、屏幕位置、宽度、高度: 初始化Tile类的一个实例。瓷砖代表 我们董事会中的一个“职位”。 -self:正在初始化的磁贴 -屏幕位置:绘制瓷砖的[x,y]坐标 -宽度:瓷砖的宽度 -高度:瓷砖的高度 self.screen\u position=屏幕位置 self.content= 创建一个定义边界的矩形 x、 y=屏幕位置 self.rect=pygame.Rectx,y,宽度,高度 def draw_contentself: image_1=pygame.image.load'image1.bmp' image_2=pygame.image.load'image2.bmp' image\u 3=pygame.image.load'image3.bmp' image_4=pygame.image.load'image4.bmp' image_5=pygame.image.load'image5.bmp' image_6=pygame.image.load'image6.bmp' image_7=pygame.image.load'image7.bmp' image_8=pygame.image.load'image8.bmp' pygame_图像_曲面=[] pygame_图像_曲面。追加图像_1 pygame_图像_曲面。追加图像_2 pygame_图像_曲面。追加图像_3 pygame_图像_曲面。附加图像_4 pygame_图像_曲面。附加图像_5 pygame_图像_曲面。追加图像_6 pygame_image_surfaces.appendimage_7 pygame_图像_曲面。追加图像_8 pygame_图像_曲面=pygame_图像_曲面+pygame_图像_曲面 random.shufflepygame\u图像\u曲面 image\u surfaces=pygame\u image\u surfaces 对于rangelenimage_曲面中的i: 瓦片 Tile.surface.blittext\u图像,文本\u位置 def drawself: 将瓷砖的内容绘制到其表面。 -self:正在绘制的瓷砖 自绘制内容 pygame.draw.rectile.surface,Tile.fg_color,self.rect, 瓷砖.边框宽度 def设置内容自身,新内容: -self:其内容正在更新的互动程序 self.content=新内容 主要的,python,pygame,Python,Pygame,尝试在pygame中创建一个记忆游戏,但我在尝试将图像blit到每个单独的磁贴上时遇到问题,希望获得一些故障排除方面的帮助。我要做的是从现在是曲面对象的图像文件列表中,我想在每个平铺上添加一个。由于某种原因,尽管我的逻辑是错误的。我不确定这些东西应该放在我的游戏类还是我的tile类中,因为它描述的是tile而不是游戏 Tldr:不知道如何将图像从列表中blit到每个磁贴上首先,定义和加载图像的代码可以简化很多: il=['image'+stri+'.bmp'表示范围1,9中的i] pygame_

尝试在pygame中创建一个记忆游戏,但我在尝试将图像blit到每个单独的磁贴上时遇到问题,希望获得一些故障排除方面的帮助。我要做的是从现在是曲面对象的图像文件列表中,我想在每个平铺上添加一个。由于某种原因,尽管我的逻辑是错误的。我不确定这些东西应该放在我的游戏类还是我的tile类中,因为它描述的是tile而不是游戏


Tldr:不知道如何将图像从列表中blit到每个磁贴上首先,定义和加载图像的代码可以简化很多:

il=['image'+stri+'.bmp'表示范围1,9中的i] pygame_image_surfaces=[pygame.image.loados.path.joinpath,imagenames中名称的名称] 与平铺关联的图像存储在平铺对象的实例属性self.content中。使用此属性绘制平铺:

类别磁贴: [...] def draw_contentself: image\u rect=self.content.get\u rectcenter=self.rect.center Tile.surface.blitself.content,image\u rect def drawself: 将瓷砖的内容绘制到其表面。 -self:正在绘制的瓷砖 自绘制内容 pygame.draw.rectile.surface,Tile.fg_颜色,self.rect,Tile.border_宽度 def设置内容自身,新内容: -self:其内容正在更新的互动程序 self.content=新内容 创建一个随机图像列表。并使用此列表设置整个平铺网格的图像:

班级游戏: [...] def创建网格自身,网格大小: 创建大小为grid_size x grid_size的平铺网格。 imgnames=['image'+stri+'.bmp'表示范围1,9中的i] image_surfaces=[pygame.image.loados.path.joinpath,imgnames中的名称对应名称] 图像曲面=图像曲面+图像曲面 random.shuffleimage_曲面 self.grid=[] 这个for循环创建网格中的每一行 对于rangegrid\u大小中的行数: 新建行=self.create行数、栅格大小、图像曲面 self.grid.appendnew_行 def创建行、行数、大小、图像: 在网格中创建一行。每行包含大小平铺。 用于计算屏幕上磁贴的x、y坐标 -row_num:正在创建的网格的第n行 -大小:行中的平铺数 返回新创建的行的名称 平铺高度=self.surface.get\u高度//大小 平铺宽度=3/4*self.surface.get\u宽度//大小 新_行=[] 对于rangesize中的col_num: 位置=行数*平铺高度+10,列数*平铺宽度+10 内容=图像[行数*大小+列数] 一块瓷砖=瓷砖、瓷砖宽度、瓷砖高度 一个tile.set\u内容 新的\u行。附加一个\u磁贴 返回新行