pygame是一组用于编写视频游戏的Python模块。只有在使用pygame库时才使用此标记,如果您对python中的游戏编程有疑问,请不要使用此标记。
因此,在此类中的绘制方法中,由于某种原因,我遇到了位置参数错误。 文件“/Users/wallera/PycharmProjects/MAJORPROJECT2/maintest.py”,第 21 行,位于
我正在为我正在制作的平台游戏编写生命逻辑游戏代码,但它并没有检查每个图块,只给我一个对象位置 ” 我正在为我正在制作的平台游戏编写生命逻辑游戏代码,但它不会检查每个图块,并且只给我一个对象位置 "<scripts.tilemap.Tilemap object at 0x000001FFBEE1DC40>" 这是我的游戏逻辑: def is_tile_alive(self, pos): tile_loc = (int(pos[0] // self.tile_size), int(pos[1] // self.tile_size)) tile_key = f"{tile_loc[0]};{tile_loc[1]}" if tile_key in self.tilemap and self.tilemap[tile_key]['type'] in ALIVE_TILE_TYPES: print('tile is there') return True return False def logic(self, pos, offset): neighbors = 0 tile_loc = (int(pos[0] // self.tile_size), int(pos[1] // self.tile_size)) for offset in NEIGHBOR_OFFSETS: neighbor_pos = (tile_loc[0] + offset[0], tile_loc[1] + offset[1]) if self.is_tile_alive(neighbor_pos): print('neighbor is alive') neighbors += 1 current_tile_alive = self.is_tile_alive(tile_loc) if current_tile_alive and (neighbors < 2 or neighbors > 3): load_image('tiles/ntile/ntile.png') elif not current_tile_alive and neighbors == 3: self.render(self.tile) elif current_tile_alive and neighbors == 3: pass 这很可能是我的问题 if tile_key in self.tilemap and self.tilemap[tile_key]['type'] in ALIVE_TILE_TYPES: 我尝试了不同的方法来更改它,它改变了位置,但仍然没有给我所有的图块位置 这是我的瓷砖地图脚本 import json import pygame from scripts.utils import load_image, load_images NEIGHBOR_OFFSETS = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)] PHYSICS_TILE = {'tiles'} ALIVE_TILE_TYPES = {'tile.png'} class Tilemap: def __init__(self, game, tile_size=16): self.game = game self.tile_size = tile_size self.tilemap = {} self.offgrid_tiles = [] self.timer_event = pygame.USEREVENT + 1 pygame.time.set_timer(self.timer_event, 5000) def extract(self, id_pairs, keep=False): matches = [] for tile in self.offgrid_tiles.copy(): if (tile['type'], tile['variant']) in id_pairs: matches.append(tile.copy()) if not keep: self.offgrid_tiles.remove(tile) for loc in self.tilemap: tile = self.tilemap[loc] if (tile['type'], tile['variant']) in id_pairs: matches.append(tile.copy()) matches[-1]['pos'] = matches[-1]['pos'].copy() matches[-1]['pos'][0] *= self.tile_size matches[-1]['pos'][1] *= self.tile_size if not keep: del self.tilemap[loc] return matches def tiles_around(self, pos): tiles = [] tile_loc = (int(pos[0] // self.tile_size), int(pos[1] // self.tile_size)) for offset in NEIGHBOR_OFFSETS: check_loc = str(tile_loc[0] + offset[0]) + ';' + str(tile_loc[1] + offset[1]) if check_loc in self.tilemap: tiles.append(self.tilemap[check_loc]) return tiles def save(self, path): f = open(path, 'w') json.dump({'tilemap': self.tilemap, 'tile_size': self.tile_size, 'offgrid': self.offgrid_tiles}, f) f.close() def load(self, path): f = open(path, 'r') map_data = json.load(f) f.close() self.tilemap = map_data['tilemap'] self.tile_size = map_data['tile_size'] self.offgrid_tiles = map_data['offgrid'] def physics_rects_around(self, pos): rects = [] for tile in self.tiles_around(pos): if tile['type'] in PHYSICS_TILE: rects.append(pygame.Rect(tile['pos'][0] * self.tile_size -8, tile['pos'][1] * self.tile_size, self.tile_size, self.tile_size)) return rects def render(self, surf, offset=(0, 0)): for tile in self.offgrid_tiles: surf.blit(self.game.assets[tile['type']], (tile['pos'][0] - offset[0], tile['pos'][1] - offset[1])) for x in range(offset[0] // self.tile_size, (offset[0] + surf.get_width()) // self.tile_size + 1): for y in range(offset[1] // self.tile_size, (offset[1] + surf.get_height()) // self.tile_size + 1): loc = str(x) + ';' + str(y) if loc in self.tilemap: tile = self.tilemap[loc] surf.blit(self.game.assets[tile['type']], (tile['pos'][0] * self.tile_size - offset[0], tile['pos'][1] * self.tile_size - offset[1])) def is_tile_alive(self, pos): tile_loc = (int(pos[0] // self.tile_size), int(pos[1] // self.tile_size)) tile_key = f"{tile_loc[0]};{tile_loc[1]}" if tile_key in self.tilemap and self.tilemap[tile_key]['type'] in ALIVE_TILE_TYPES: print('tile is there') return True return False def logic(self, pos, offset): neighbors = 0 tile_loc = (int(pos[0] // self.tile_size), int(pos[1] // self.tile_size)) for offset in NEIGHBOR_OFFSETS: neighbor_pos = (tile_loc[0] + offset[0], tile_loc[1] + offset[1]) if self.is_tile_alive(neighbor_pos): print('neighbor is alive') neighbors += 1 current_tile_alive = self.is_tile_alive(tile_loc) if current_tile_alive and (neighbors < 2 or neighbors > 3): load_image('tiles/ntile/ntile.png') elif not current_tile_alive and neighbors == 3: self.render(self.tile) elif current_tile_alive and neighbors == 3: pass 使用numpy它可以工作 def is_alive(self, pos): return str(np.sum(grid[pos[0]-1:pos[0]+2,pos[1]-1:pos[1]+2])) - grid[pos[0]][pos[ 1]]
我用Python和PyGame制作了一个GUI,我想从现在开始制作更具未来感的GUI。在制作这个特定的 GUI 时,我发现 PyGame 可能不是最佳选择,因为用户事件的数量......
我下载了一种名为 redline.ttf 的字体,我想在 pygame 中使用它。我只想在屏幕上打印文本。我在文件夹 pygame -> lib 中找到了一种名为“freesansbold.ttf”的基本字体。我已经放了...
我已经做到了,当玩家 1 和玩家 2 的精灵碰撞时,代码停止接受输入并且它们不会移动。如果碰撞后的输入,我在实现运动时遇到了麻烦......
Python/Pygame:如何让演员随机移动/漂移到某个位置?
我无法让我的演员在屏幕上随机移动。我尝试生成一个随机位置,然后慢慢地使其沿对角线或任何方向漂移,但我无法将其实现......
我正在尝试制作一个蛇游戏,我遇到的唯一问题是,当游戏结束屏幕出现并且您单击重新启动按钮时,它会像我想要的那样显示启动屏幕,但是.. .
我正在尝试使我的多边形能够旋转。但是当我输入 new_point 时,报告是 new_point 未定义。这让我很头疼 def xoay_hinh(键): lx, ly = zip(*hinh) 分钟_x,分钟...
OpenGL pygame 无法使缓冲区与 vertextPointer 和 colorPointer 一起可靠地工作
所以我很确定我在这里调用 OpenGL 的方式出了问题。 我在下面提供了一个示例,其中大约 30% 的时间显示半透明顶点彩色方块...
我正在做一个贪吃蛇游戏,我遇到了一个我不知道如何解决的错误,我想让我的蛇通过墙壁传送,当蛇与墙壁碰撞时,它会传送到另一面相反的墙壁。 ..
我正在pgzero中制作一个简单的游戏,但是屏幕。功能似乎永远无法正常工作。 当我尝试在开头显示文本时,如下所示: screen.draw.text("你好", (50, 30), color="
我正在用pygame制作一个数学问题游戏。我有 8 个单独的选择,因此我将它们分成函数。现在我所有的问题和答案都在 txt 文件中,我正在将其读入 arr...
首先,我想要播放的文件不是错误的原因,这看起来像是 ALSA 的问题。 正如你所看到的,即使我想直接在终端中启动声音文件(自动
快进按钮前进十秒,但只会执行一次 所有这一切都发生在 fast_forward_music 中。问题的根源似乎在于变量 current_time never
我目前正在构建一个自上而下的赛车,但是我正在尝试与静态方形物体进行准确的碰撞检测。 最好的方法是什么? 这是我的代码的一部分: ...
我正在尝试制作一个游戏,当这个循环运行时,它会使 pygame 崩溃 而 poterbar_hunt_pone == True 且 ptwo_shot == True: 如果波特巴克斯 < xone+carone_width:
我的玩家不会移动,我不明白为什么。我遵循了有关如何使其移动的教程。我做了那个人所做的事情,但它对我来说不起作用。 这是我的代码: 导入pygame pygame.init() sc...
我的玩家不会移动,我不明白为什么。我遵循了有关如何使其移动的教程。我做了那个人所做的事情,但它对我来说不起作用。 这是我的代码: 导入pygame pygame.init()
我对 pygame 相当陌生,我遇到了我的第一个树桩,我找不到答案.. 在位图传输文本后,然后更改同一变量的字符串,游戏而不是替换原始...