- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在制作一个吃 bean 人游戏,正在努力弄清楚如何在与屏幕碰撞后将其从屏幕上移除。我尝试将颜色更改为黑色,但无法成功。接下来我尝试删除元素索引,但这也不起作用。
import pygame
import os
import sys
#initialise the game
pygame.init()
screen = pygame.display.set_mode((448, 576))
done = False
y = 416
x = 232
#sets up clock and loads pacman image
clock = pygame.time.Clock()
PACMANSPRITE = pygame.image.load("pacman.png").convert_alpha()
PACMAN_MAP = pygame.image.load("pacman_map.png").convert_alpha()
#gets pacman intro music, sets music to lower volume then plays it
pygame.mixer.music.load('pacman_beginning.WAV')
pygame.mixer.music.set_volume(0.01)
pygame.mixer.music.play(0)
#box class, used for boxes to border pacmans map
class boxcollisions(pygame.sprite.Sprite):
def __init__(self, x, y):
self.y = y
self.x = x
self.rect = pygame.Rect(self.x, self.y, 12, 12)
self.colour = (0, 128, 255)
def draw(self, screen):
pygame.draw.rect(screen, self.color, self.rect)
class pointclass(pygame.sprite.Sprite):
def __init__(self, x, y):
self.y = y
self.x = x
self.rect = pygame.Rect(self.x, self.y, 12, 12)
self.colour = (255, 204, 153)
self.score=0
def draw(self, screen):
pygame.draw.rect(screen, self.colour, self.rect)
def addpoint(self):
self.score+=1
print(self.score)
self.colour= (0,0,0)
print('why isnt it working')
#pacmans class
class pacman(pygame.sprite.Sprite):
def __init__(self, image, x, y):
self.image = image
self.y=416
self.x=216
self.currentx=self.x
self.currenty=self.y
self.rect = self.image.get_rect()
self.rect.left = self.x
self.rect.top = self.y
self.rect.width=16
self.rect.height=16
# move pacman
def movement(self):
pressed= pygame.key.get_pressed()
if pressed[pygame.K_UP]:
self.y -= 2
if pressed[pygame.K_DOWN]:
self.y += 2
if pressed[pygame.K_LEFT]:
self.x -= 2
if pressed[pygame.K_RIGHT]:
self.x += 2
self.rect.left = self.x
self.rect.top = self.y
def draw(self, surface):
# blit yourself at your current position
surface.blit(self.image, (self.x, self.y))
self.currentx=self.x
self.currenty=self.y
def outofbounds(self):
self.y=self.currenty
self.x=self.currentx
self.rect.left = self.x
self.rect.top = self.y
#instances the pacman class
sprite = pacman(PACMANSPRITE, x ,y)
#main game loop
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
pygame.quit()
sys.exit()
screen.fill((0,0,0))
screen.blit(PACMAN_MAP, (0, 0))
#co-ordinates for boxes to set up map boundaries
boxboundaries=[
[],
[],
[],
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28],
[1,14,15,28], #5
[1,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,23,24,25,26,28],
[1,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,23,24,25,26,28],
[1,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,23,24,25,26,28],
[1,28],
[1,3,4,5,6,8,9,11,12,13,14,15,16,17,18,20,21,23,24,25,26,28], #10
[1,3,4,5,6,8,9,11,12,13,14,15,16,17,18,20,21,23,24,25,26,28],
[1,8,9,14,15,20,21,28],
[1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,23,24,25,26,27,28],
[1,2,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,23,24,25,26,27,28],
[6,8,9,20,21,23], #15
[6,8,9,11,12,13,14,15,16,17,18,20,21,23],
[1,2,3,4,5,6,8,9,11,12,13,14,15,16,17,18,20,21,23,24,25,26,27,28],
[1,11,12,13,14,15,16,17,18,28],
[1,2,3,4,5,6,8,9,11,12,13,14,15,16,17,18,20,21,23,24,25,26,27,28],
[6,8,9,11,12,13,14,15,16,17,18,20,21,23,24,25,26,27,28], #20
[6,8,9,20,21,23],
[6,8,9,11,12,13,14,15,16,17,18,20,21,23],
[1,2,3,4,5,6,8,9,11,12,13,14,15,16,17,18,20,21,23,24,25,26,27,28],
[1,14,15,28],
[1,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,23,24,25,26,28], #25
[1,3,4,5,6,8,9,10,11,12,14,15,17,18,19,20,21,23,24,25,26,28],
[1,5,6,23,24,28],
[1,2,3,5,6,8,9,11,12,13,14,15,16,17,18,20,21,23,24,26,27,28],
[1,2,3,5,6,8,9,11,12,13,14,15,16,17,18,20,21,23,24,26,27,28],
[1,8,9,14,15,20,21,28], # 30
[1,3,4,5,6,7,8,9,10,11,12,14,15,17,18,19,20,21,22,23,24,25,26,28],
[1,3,4,5,6,7,8,9,10,11,12,14,15,17,18,19,20,21,22,23,24,25,26,28],
[1,28],
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28],
]
#point spawn locations
pointspawns=[
[],
[],
[],
[],
[2,3,4,5,6,7,8,9,10,11,12,13,16,17,18,19,20,21,22,23,24,25,26,27], #5
[2,7,13,16,22,27],
[2,7,13,16,22,27],
[2,7,13,16,22,27],
[2,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27],
[2,7,10,19,22,27], #10
[2,7,10,19,22,27],
[2,3,4,5,6,7,10,11,12,13,16,17,18,19,22,23,24,25,26,27],
[7,22],
[7,22],
[7,22], #15
[7,22],
[7,22],
[7,22],
[7,22],
[7,22], #20
[7,22],
[7,22],
[7,22],
[2,3,4,5,6,7,8,9,10,11,12,13,16,17,18,19,20,21,22,23,24,25,26,27],
[2,7,13,16,22,27], #25
[2,7,13,16,22,27],
[2,3,4,7,8,9,10,11,12,13,16,17,18,19,20,21,22,25,26,27],
[4,7,10,19,22,25],
[4,7,10,19,22,25],
[2,3,4,5,6,7,10,11,12,13,16,17,18,19,22,23,24,25,26,27],
[2,13,16,27], # 30
[2,13,16,27],
[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27],
]
#moves pacman
sprite.movement()
px=0
py=-16
for row in pointspawns:
#y co ordinate
py=py+16
for n in row:
#x co ordinate
n=n-1
px=n*16
point=(pointclass(px, py))
#used to draw points
point.draw(screen)
if pygame.sprite.collide_rect(sprite, point):
point.addpoint()
#builds the boxes
bx=0
by=-16
for row in boxboundaries:
#y co ordinate
by=by+16
for n in row:
#x co ordinate
n=n-1
bx=n*16
box=(boxcollisions(bx, by))
#used to draw boxes for visual repsentation
#box.draw(screen)
if pygame.sprite.collide_rect(sprite, box):
sprite.outofbounds()
#draws pacman
sprite.draw(screen)
pygame.display.flip()
clock.tick(60)
最佳答案
我知道的最简单的方法(我知道的不多)是使用 pygame.sprite.Group()
和pygame.sprite.spritecollide
.
这里的基本逻辑是,为颗粒创建一个 Sprite 组,将每个颗粒创建为 Sprite 并将其添加到组中。在游戏循环的每次迭代中,将 Sprite 组绘制到屏幕上,并使用spritecollide
验证玩家角色与颗粒组中的任何颗粒之间是否存在碰撞。 .
spritecollide 有一个参数可以在发生碰撞时消除颗粒,因此您需要将其设置为 true,以避免在下一个循环中绘制它。
#Basic logic as example.
pellets = pygame.sprite.Group()
#CREATE PELLETS AND ADD THEM TO THE pellets sprite group.
player = Sprite()
...
#IN THE GAME LOOP
#Validate if there was a collision.
pellets_hit = pygame.sprite.spritecollide(player, pellets, True) #True indicates that, if there were any hit, remove the pellet from the group.
if len(pellet_hit):
#Increment score or something.
...
#Updating the display
player.draw(screen)
pellets.draw(screen) #If there were any hit, the pellet won't be in this group and won't be drawn
这是一个使用 Sprite 和 Sprite 组的项目示例: Snake game
关于python - 制作 pacman 游戏,但不知道如何在碰撞后移除 pac 颗粒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45938311/
有没有办法让浏览器读取 .pac 文件,而无需用户手动将浏览器的自动配置文件指向 URL? 最佳答案 您是在谈论代理自动配置吗? 基本上你必须配置一个主机名,例如 wpad.example.com 并
我正在尝试清理 PAC 文件。以下哪些代码块更简洁和/或更快? if (host == "localhost") {return "D
我正在编写一个 .pac 文件以在没有越狱的情况下与 iOS5 一起使用,但在匹配以“https”开头的 url(例如: https://test.com )时我觉得很麻烦。 这是我的脚本: func
我正在使用 dynatrace ajax 版本,它需要代理服务器和密码才能连接到 dynatrace 服务器。 问题是我只有我们在工作中使用的 .pac 文件 URL。 是否可以知道我的请求解析到哪个
是否可以从 .Net windows 应用程序执行 PAC 文件中的 Javascript 以返回代理服务器? 最佳答案 自 proxy auto-config file只是一个 JavaScript
我需要在我的 chrome 扩展程序中获得 pacScript 的响应。A pacScript将返回 DIRECT 字符串,以防我们不需要代理并且我想检测到它。 var config = {
Proxy auto-configuration (PAC)文件包含将目标主机解析为代理配置的 javascript。很明显,我可以使用嵌入式 javascript 引擎并提供 PAC 文件所需的对象
我使用的是 Red Hat Enterprise Linux Server 6.2 版,我只有终端访问权限(没有 GUI)。我的公司有一个代理自动配置脚本 (PAC),这是获得互联网连接的唯一方法。
我最近将我的 Nexus 4 升级到了 Android 4.4。在调试我的应用程序时,我发现消息 W/chromium(14962): [WARNING:proxy_service.cc(888)]
我有一个 PAC 文件,我需要解析该文件才能将代理应用于网络。 pac文件的内容是: function FindProxyForURL(url,host) { return "DIRE
有没有办法将 CNTLM 代理与自动配置 .pac 文件一起使用?我希望 CNTLM 自动决定哪些 url 应该通过代理解析,哪些 url 直接解析(基于远程公司 .pac 文件)。 最佳答案 CNT
我正在使用 Windows 10 企业版 1607 , 我们使用代理自动配置 (PAC) 脚本进行代理配置。 问题是 docker 连接。我有 Docker 17.12.0-ce (稳定版)已安装。我
我花了一天时间尝试解决一个问题。当用户放大页面时,谷歌放置自动完成 .pac-container 不再显示在相应的输入字段下。我花了一天的时间进行测试,我发现的是来自谷歌的:https://code.
我遇到了以下问题。我必须编写连接到 pacs 并获取图像的小型应用程序。我决定使用 dcm4che 工具包。我写了以下代码: 公共(public)课 Dcm4 { /** * @param args
我有一个 Conquest PACS,我想使用 pSQL 数据库。 但是当我查询 PACS 时,我不断收到 DBerror。 据我在日志中看到,PACS 从不查询数据库。 我的 dicom.ini 文
我正在尝试使用 Python(特别是 pynetdicom3)连接到 PACS 服务器,但是我无法使用文档中指定的方法连接到 PACS 服务器。我可以使用 dcm4che 访问此服务器。例如。在命令行
我开始用 C# 编写一些非常简单的网络应用程序,偶尔我会遇到关于没有配置代理的异常。我所处的工作环境具有相当严格的代理自动配置文件(.pac -- 代理自动配置)。 有没有办法告诉 C# 使用该 .p
我可以在 linux 下通过 .pac 文件配置系统范围的代理吗? 我知道我可以设置代理 export $PROXY=proxyserver:port 但我想实现类似的东西: export $PROX
我很难弄清楚如何做到这一点。 我正在使用 google.map.places.Autocomplete 并且一切正常,但由于应用程序/屏幕尺寸的原因,带有返回搜索列表的 pac-container 位
在 FireFox 中,互联网连接是通过代理自动配置文件“something.pac”建立的 我如何知道某个 URL 正在使用哪个代理服务器? 谢谢。 最佳答案 .pac 文件只是一个 ECMAscr
我是一名优秀的程序员,十分优秀!