- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的吃 bean 人代码让所有的细胞都切换,所以当我把药丸递给吃 bean 人时,他不会吃药,只是忽略它们并改变位置。我希望药丸在他经过时消失,进行计数并将分数显示在屏幕上,但当它们交换位置时我不知道该怎么做。
import pygame
import random
from pygame.constants import *
pygame.init()
tela = pygame.display.set_mode((1000, 560))
class Tabuleiro:
def __init__(self, tela, x, y):
self.x = x
self.y = y
self.tela = tela
self.maze = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 1, 1, 0, 1, 3, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1],
[1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1],
[1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1],
[1, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1],
[1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1],
[1, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
def show(self):
for col in range(20):
for lin in range(11):
if self.maze[lin][col] == 0:
self.tela.fill((255, 255, 255), rect=[self.x + col * 50 + 15, self.y + lin * 50 + 15, 7, 7])
if self.maze[lin][col] == 1:
self.tela.fill((0, 117, 176), rect=[self.x + col * 50, self.y + lin * 50, 50, 50])
if self.maze[lin][col] == 2:
self.tela.fill((255, 255, 0), rect=[self.x + col * 50 + 12, self.y + lin * 50 + 12, 25, 25])
if self.maze[lin][col] == 3:
self.tela.fill((255, 0, 0), rect=[self.x + col * 50 + 12, self.y + lin * 50 + 12, 25, 25])
def enumerar(self, number):
for row, rowlist in enumerate(self.maze):
for col, cell in enumerate(rowlist):
if cell == number:
return row, col
return None, None
def validar_col(self, row, col):
if row == None or col == None:
return False
if 0 <= row < len(self.maze) and 0 <= col < len(self.maze[row]):
return True
return False
def numero(self, row, col, number):
if self.validar_col(row, col):
return self.maze[row][col] == number
return False
def trocar_celulas(self, row1, col1, row2, col2):
if self.validar_col(row1, col1) and self.validar_col(row2, col2):
self.maze[row1][col1], self.maze[row2][col2] = self.maze[row2][col2], self.maze[row1][col1]
maze = Tabuleiro(tela, 10, 10)
clock = pygame.time.Clock()
next_move_time = 0
jogo = True
while jogo:
row, col = maze.enumerar(2)
for event in pygame.event.get():
if event.type == pygame.QUIT:
jogo = False
if pygame.key.get_pressed()[K_LEFT]:
if maze.numero(row, col - 1, 0):
maze.trocar_celulas(row, col - 1, row, col)
if pygame.key.get_pressed()[K_RIGHT]:
if maze.numero(row, col + 1, 0):
maze.trocar_celulas(row, col + 1, row, col)
if pygame.key.get_pressed()[K_UP]:
if maze.numero(row - 1, col, 0):
maze.trocar_celulas(row, col, row - 1, col)
if pygame.key.get_pressed()[K_DOWN]:
if maze.numero(row + 1, col, 0):
maze.trocar_celulas(row + 1, col, row, col)
tela.fill(0)
clock.tick(7)
maze.show()
pygame.display.update()
我又卡住了,谢谢。
最佳答案
您必须为“空”字段定义一个数字。在下文中,我对玩家访问的字段使用 -1。
更改方法 trocar_celulas
。用 -1 替换为 0 的字段
class Tabuleiro:
# [...]
def trocar_celulas(self, row1, col1, row2, col2):
if self.validar_col(row1, col1) and self.validar_col(row2, col2):
if self.maze[row1][col1] == 0:
self.maze[row1][col1] = -1
if self.maze[row2][col2] == 0:
self.maze[row2][col2] = -1
self.maze[row1][col1], self.maze[row2][col2] = self.maze[row2][col2], self.maze[row1][col1]
您必须允许玩家移动到 0 和 -1 的字段:
jogo = True
while jogo:
# [...]
if pygame.key.get_pressed()[K_LEFT]:
if maze.numero(row, col - 1, 0) or maze.numero(row, col - 1, -1):
maze.trocar_celulas(row, col - 1, row, col)
if pygame.key.get_pressed()[K_RIGHT]:
if maze.numero(row, col + 1, 0) or maze.numero(row, col + 1, -1):
maze.trocar_celulas(row, col + 1, row, col)
if pygame.key.get_pressed()[K_UP]:
if maze.numero(row - 1, col, 0) or maze.numero(row - 1, col, -1):
maze.trocar_celulas(row - 1, col, row, col)
if pygame.key.get_pressed()[K_DOWN]:
if maze.numero(row + 1, col, 0) or maze.numero(row + 1, col, -1):
maze.trocar_celulas(row + 1, col, row, col)
完整示例:
import pygame
import random
from pygame.constants import *
pygame.init()
tela = pygame.display.set_mode((1000, 560))
class Tabuleiro:
def __init__(self, tela, x, y):
self.x = x
self.y = y
self.tela = tela
self.maze = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 1, 1, 0, 1, 3, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1],
[1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1],
[1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1],
[1, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1],
[1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1],
[1, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
def show(self):
for col in range(20):
for lin in range(11):
if self.maze[lin][col] == 0:
self.tela.fill((255, 255, 255), rect=[self.x + col * 50 + 15, self.y + lin * 50 + 15, 7, 7])
if self.maze[lin][col] == 1:
self.tela.fill((0, 117, 176), rect=[self.x + col * 50, self.y + lin * 50, 50, 50])
if self.maze[lin][col] == 2:
self.tela.fill((255, 255, 0), rect=[self.x + col * 50 + 12, self.y + lin * 50 + 12, 25, 25])
if self.maze[lin][col] == 3:
self.tela.fill((255, 0, 0), rect=[self.x + col * 50 + 12, self.y + lin * 50 + 12, 25, 25])
def enumerar(self, number):
for row, rowlist in enumerate(self.maze):
for col, cell in enumerate(rowlist):
if cell == number:
return row, col
return None, None
def validar_col(self, row, col):
if row == None or col == None:
return False
if 0 <= row < len(self.maze) and 0 <= col < len(self.maze[row]):
return True
return False
def numero(self, row, col, number):
if self.validar_col(row, col):
return self.maze[row][col] == number
return False
def trocar_celulas(self, row1, col1, row2, col2):
if self.validar_col(row1, col1) and self.validar_col(row2, col2):
if self.maze[row1][col1] == 0:
self.maze[row1][col1] = -1
if self.maze[row2][col2] == 0:
self.maze[row2][col2] = -1
self.maze[row1][col1], self.maze[row2][col2] = self.maze[row2][col2], self.maze[row1][col1]
maze = Tabuleiro(tela, 10, 10)
clock = pygame.time.Clock()
next_move_time = 0
jogo = True
while jogo:
row, col = maze.enumerar(2)
for event in pygame.event.get():
if event.type == pygame.QUIT:
jogo = False
if pygame.key.get_pressed()[K_LEFT]:
if maze.numero(row, col - 1, 0) or maze.numero(row, col - 1, -1):
maze.trocar_celulas(row, col - 1, row, col)
if pygame.key.get_pressed()[K_RIGHT]:
if maze.numero(row, col + 1, 0) or maze.numero(row, col + 1, -1):
maze.trocar_celulas(row, col + 1, row, col)
if pygame.key.get_pressed()[K_UP]:
if maze.numero(row - 1, col, 0) or maze.numero(row - 1, col, -1):
maze.trocar_celulas(row - 1, col, row, col)
if pygame.key.get_pressed()[K_DOWN]:
if maze.numero(row + 1, col, 0) or maze.numero(row + 1, col, -1):
maze.trocar_celulas(row + 1, col, row, col)
tela.fill(0)
clock.tick(7)
maze.show()
pygame.display.update()
关于python - 我如何让我的 python 代码从我的吃 bean 人游戏中删除药丸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65201227/
Closed. This question is off-topic。它当前不接受答案。 想要改善这个问题吗? Update the question,所以它是用于堆栈溢出的on-topic。 已关闭
当我的应用中的 NSTextField 获得焦点时,我在接收来自 NSFontPanel 的任何消息时遇到了奇怪的问题。 即使是 NSTextField 的子类也没有从字体面板接收到任何内容。似乎面板
我正在使用简单的 for 循环在一行中移动 pacman,但 pacman 闪烁或者可能是整个屏幕更新和闪烁。我怎样才能让它更平滑? 编辑: 我目前正在使用 C++ Turbo 及其内置图形库。但是我
我有一个简单的 TreeCellRenderer,它从节点中提取 JButton,并将其输出到 JTree。 public class ButtonCellRenderer extends JButt
我在编译时遇到了这两个错误,但我不明白我做错了什么。 main.cpp|107|error: 'sqrt' was not declared in this scope| main.cpp|107|e
我目前正在建立一个程序,在吃豆子迷宫中吃掉所有食物。但是,每次Pacman进行新动作时,我的程序都会被调用,因此程序结束时不会保存任何内存,并且只会返回一个动作:L,R,U或Down。我是AI新手,也
我需要在矩阵表示的图中找到成本较低的路径。我对 Dijkstra 算法进行了一些研究,但我需要一个 vector ,其中包含最短路径中的节点序列,而不是距离本身。该游戏是为 Assembly 制作的,
我试图在用 Python 处理后将一些 XML 数据导入我的 MySQL 数据库。为了简单起见,我通过一个使用 SQLAlchemy 访问我的数据库的脚本来完成这一切。 XML 文件有大约 80,00
我有 2 个用于 pacman 游戏开始的类(class),我对按键监听器或按键绑定(bind)的工作方式感到非常困惑。我有向上、向下、向右、向左移动的方法。我花了几个小时试图找出答案,但它不会调用常
参见Having Some Issues With Making Pacman才能充分理解这个问题。只需查看已接受答案的第一部分即可。这是用java编写的! 我正在使用上面链接中所示的数组。我的 pa
我正在用 Java 创建 pacman 游戏,但有 1 个无法解决的问题。问题如下: 游戏屏幕上有 4 个按钮,分别用于:上、下、左、右。问题是我无法在 x 位置和 y 位置同时使用按钮,因为我总是得
我正在使用 Jquery 制作吃 bean 人游戏。吃 bean 人的移动由箭头键引导,这会触发一个 setInterval() ,使他重复移动他宽度的距离,给人一种他在完全直线移动的错觉。按一个新键
我目前正在用 Java 制作吃 bean 人游戏。不过我有一个关于鬼魂的问题。 我知道鬼魂的攻击方式并不完全相同。我首先想研究让鬼魂去追吃 bean 的基础知识,而不用担心其中的差异。 我想问你们这些
我是 swift 的新手,我正在尝试编写吃 bean 人程序。我正在尝试将 pacman move 到滑动的方向,到目前为止我已经设法将它 move 到屏幕的边缘,问题是当我尝试将它 move 时不是
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题吗? 更新问题,以便 editing this post 提供事实和引用来回答它. 关闭 9 年前。 Improve
我正在尝试使用 ElementTree 读取 XML并将结果写回磁盘。我的长期目标是以这种方式美化 XML。然而,在我天真的方法中,ElementTree 吃掉了文档中的所有命名空间声明,我不明白为什
我在《吃 bean 人》中找到了很多关于鬼魂 AI 的引用资料,但没有提到在鬼魂被吃 bean 人吃掉后,眼睛是如何回到中央鬼洞的。 在我的实现中,我实现了一个简单但糟糕的解决方案。我只是在每个角落都
首先,这是吃 bean 人而非幽灵的 AI。 我正在编写一个 Android 动态壁纸,它围绕您的图标播放 PacMan。虽然它通过屏幕触摸支持用户建议,但游戏的大部分内容将由 AI 来玩。我已完成游
我正在制作吃 bean 人,但在框架上绘制图形时遇到问题,当我绘制点图像时,它看起来像蛇游戏,我尝试将我的背景和字符绘制方法都放在渲染中方法,但比我的点图像闪烁 它现在的样子,随意忽略那张随机的脸,这
我正在尝试用 C++ 创建一个基本的 Pacman 游戏(我将在这个问题中使用 Java 语法,因为这更容易演示),但我找不到好的设计选项。 到目前为止,我有 4 个类: - 怪物:可以针对怪物特定的
我是一名优秀的程序员,十分优秀!