- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试用Python制作蛇游戏,但遗憾的是我的蛇和我的苹果没有出现在屏幕上,我看到的只是一个灰色的屏幕,上面什么也没有,你能帮我吗?谢谢!P.S - 我还想解释为什么我当前的代码不起作用,所以我将来会避免它,再次感谢。
import pygame, sys, random, time
from pygame.locals import *
pygame.init()
mainClock = pygame.time.Clock()
windowWidth = 500
windowHeight = 500
windowSurface = pygame.display.set_mode((windowWidth, windowHeight), 0, 32)
red = (255, 0, 0)
green = (0, 255, 0)
color = (100, 100, 100)
snakeHead = [250, 250]
snakePosition = [[250, 250],[240, 250],[230, 250]]
applePosition = [random.randrange(1,50)*10,random.randrange(1,50)*10]
def collisionBoundarias(snakeHead):
if snakeHead[0] >= 500 or snakeHead[0] < 0 or snakeHead[1] >= 500 or snakeHead[1] < 0:
return 1
else:
return 0
def collisionSelf(SnakePosition):
snakeHead = snakePosition[0]
if snakeHead in snakePosition[1:]:
return 1
else:
return 0
while True:
windowSurface.fill(color)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.type == pygame.K_RIGHT or event.key == pygame.K_d:
snakeHead[0] += 10
if event.type == pygame.K_LEFT or event.key == pygame.K_a:
snakeHead[0] -= 10
if event.type == pygame.K_UP or event.type == pygame.K_w:
snakeHead[1] += 10
if event.type == pygame.K_DOWN or event.type == pygame.K_s:
snakeHead[1] -= 10
def displaySnake(snakePosition):
for position in snakePosition:
pygame.draw.rect(windowSurface ,red,pygame.Rect(position[0],position[1],10,10))
def display_apple(windowSurface, applePosition, apple):
windowSurface.blit(apple ,(applePosition[0], applePosition[1]))
snakePosition.insert(0,list(snakeHead))
snakePosition.pop()
def displayFinalScore(displayText, finalScore):
largeText = pygame.font.Font('freesansbold.ttf',35)
TextSurf = largeText.render(displayText, True, (255, 255, 255))
TextRect = TextSurf.get_rect()
TextRect.center = ((windowWidth/2),(windowHeight/2))
windowSurface.blit(TextSurf, TextRect)
pygame.display.update()
time.sleep(2)
def collisionApple(applePosition, score):
applePosition = [random.randrange(1,50)*10,random.randrange(1,50)*10]
score += 1
return applePosition, score
if snakeHead == applePosition:
applePosition, score = collisionApple(applePosition, score)
snakePosition.insert(0,list(snakeHead))
pygame.display.update()
clock = pygame.time.Clock()
clock.tick(20)
最佳答案
正如评论中提到的,这些对象不会出现,因为您从未通过调用 displaySnake
和 display_apple
函数来绘制它们。在 while 循环中一次又一次地定义这些函数也是没有意义的。
这是代码的固定版本。我更改了运动代码,以便蛇在每一帧中不断移动。 (它仍然可以改进,但我试图保持简单。)
import pygame, sys, random, time
from pygame.locals import *
pygame.init()
mainClock = pygame.time.Clock()
windowWidth = 500
windowHeight = 500
windowSurface = pygame.display.set_mode((windowWidth, windowHeight), 0, 32)
clock = pygame.time.Clock()
red = (255, 0, 0)
green = (0, 255, 0)
color = (100, 100, 100)
snakeHead = [250, 250]
snakePosition = [[250, 250],[240, 250],[230, 250]]
applePosition = [random.randrange(1,50)*10,random.randrange(1,50)*10]
apple = pygame.Surface((10, 10))
apple.fill(green)
score = 0
speed = 10
# Define a velocity variable (a list or better a pygame.Vector2).
velocity = pygame.Vector2(speed, 0)
def collisionBoundarias(snakeHead):
return snakeHead[0] >= 500 or snakeHead[0] < 0 or snakeHead[1] >= 500 or snakeHead[1] < 0
def collisionApple(applePosition, score):
applePosition = [random.randrange(1,50)*10,random.randrange(1,50)*10]
score += 1
return applePosition, score
def displaySnake(snakePosition):
for position in snakePosition:
pygame.draw.rect(windowSurface, red, pygame.Rect(position[0], position[1], 10, 10))
def display_apple(windowSurface, applePosition, apple):
windowSurface.blit(apple, (applePosition[0], applePosition[1]))
while True:
# Event handling.
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
# Replace `type` with `key`.
if event.key == pygame.K_RIGHT or event.key == pygame.K_d:
velocity.x = speed
velocity.y = 0
if event.key == pygame.K_LEFT or event.key == pygame.K_a:
velocity.x = -speed
velocity.y = 0
if event.key == pygame.K_UP or event.key == pygame.K_w:
velocity.x = 0
velocity.y = -speed
if event.key == pygame.K_DOWN or event.key == pygame.K_s:
velocity.x = 0
velocity.y = speed
# Game logic.
snakeHead[0] += velocity.x # Update the x-position every frame.
snakeHead[1] += velocity.y # Update the y-position every frame.
snakePosition.insert(0, snakeHead)
snakePosition.pop()
if snakeHead == applePosition:
applePosition, score = collisionApple(applePosition, score)
snakePosition.insert(0, snakeHead)
# Drawing.
windowSurface.fill(color)
displaySnake(snakePosition)
display_apple(windowSurface, applePosition, apple)
pygame.display.update()
clock.tick(20)
关于python - 贪吃蛇游戏 : snake and apples do not appear on the screen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53420689/
我遇到了一个(至少对我而言)非常的奇怪情况。 我正在尝试重写蛇,并且移动进行得非常顺利,只有蛇在吃自己,虽然我正在删除 1 段并添加 1 (x + 1 - 1 = x?) 但是蛇消失了,而 Array
这个问题已经有答案了: NoClassDefFoundError: wrong name (8 个回答) 已关闭10 年前。 所以我正在尝试构建一个 2D 贪吃蛇游戏,而且我快完成了。我唯一的问题是,
我最近也一直在尝试做一个绘图墙,或者让这个游戏的蛇穿墙,但我不知道如何编程。如果有人知道如何让蛇穿过墙壁或在边缘画一个框架,你能帮我编程吗?如果有任何添加此游戏的建议,请在此处添加。这些是代码: im
大约两天前,我收到了我的 TI-82 STATS 可编程计算器(实际上更像是一个 TI-83) - 并想用内置的 TI-BASIC 语言编写一个贪吃蛇游戏。 虽然我不得不找出:TI-BASIC 是 极
这个问题在这里已经有了答案: How do I chain the movement of a snake's body? (1 个回答) 11 个月前关闭。 我是 python 新手,现在才开始学习
我制作了一个贪吃蛇游戏(通过尝试遵循YouTuber的代码),方向由WASD控制。然而,当我按下其中一个键时,什么也没有发生。如果我按住它,它会改变方向,但是会有很大的延迟,可能超过一秒。我该如何解决
我们都知道移动设备上的新密码屏幕。它由要连接的点矩阵组成。 唯一密码是积分的向量。这些点可以通过以下限制与自己连接: 一个点只能连接到另外一个点 如果目标点和自由点在同一条线上,则将强制一条线连接到更
我的实体定义如下: @ManyToOne private DomainObject domainObject; 运行代码时出现此错误: 2017-10-30 14:58:52,517 WARN rn
在 Snake 中向上移动意味着你只能向左和向右转。如果你向左移动,你只能向上和向下转动等。目前我有一个问题,如果我正在向左移动(例如),然后我按向上或向下,然后很快按向右,蛇将保持在同一水平并撞到自
我正在用 C++ 编写一个基本的贪吃蛇游戏作为控制台应用程序。它基于“平铺”结构的二维数组。我的问题是:当按下按钮改变蛇行进的方向时,它不会立即工作,而是等待下一个“滴答声”。管理游戏本身的函数如下所
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 4 年前。 Improve t
我只是想弄清楚逻辑并使用 Python 来帮助我做到这一点。最终,我需要使用 ImageJ 宏语言来解决这个问题。 我不知道我是否使用了正确的术语,但我想创建一个“蛇形”计数器。 x = 1 numb
我正在从 youtube 上的 thenewboston 教程中学习如何在 pygame 中制作贪吃蛇游戏,并将其制作成我自己的游戏。游戏中存在一个问题,“苹果”在蛇的位置后面生成,这是我不想要的。
给定一个 5 x 5 网格和一个对象列表(可以是任何东西,例如整数) 我怎样才能以这样的方式填充网格,网格填充的顺序是:A1、A2、A3、A4、A5、B5、B4、B3、B2、B1、C1、C2 等 所以
我正在使用 snake case 为我的 API 构建与 spring boot 的 json 映射。 spring 允许您在 application.properties 文件中轻松定义它: spr
我正在尝试读取 Yaml 模板并动态替换模板中的某些字段并创建一个新的 Yaml 文件。我生成的 yaml 文件应该在所有方面反射(reflect)模板,包括双引号。但是当我使用 snake yaml
我想找到一种方法,在单个容器中将元素包装到一条与前一行相反的新行中,就像一条蛇自己 flex 一样。我无法使用flexbox以及flex-direction和flex-wrap属性的任何组合来实现此结
我正在按照以下视频来设计贪吃蛇游戏: https://www.youtube.com/watch?v=91a7ceECNTc 我正在一步一步地跟踪它,但是当我运行它时,蛇没有显示在我的屏幕上,只显示苹
嗨,我正在尝试使用 2D 数组在控制台上创建一个矩阵。这个想法是输出应该如下所示: 1|8|9 |16 2|7|10|15 3|6|11|14 4|5|12|13 有人知道如何做到这一点吗? 最佳答案
我正在创建一个贪吃蛇游戏我使用二维数组作为我的背框。没有语法错误。我在线程中收到异常。这就是我认为错误所在: java.awt.EventQueue.invokeLater(new Runnable
我是一名优秀的程序员,十分优秀!