天道酬勤,学无止境

pygame

如何让 VBO 与 Python 和 PyOpenGL 一起工作(How to get VBOs to work with Python and PyOpenGL)

问题 下面的 Python 程序应该在窗口的右上象限绘制一个白色三角形。 import pygame from OpenGL.GL import * from ctypes import * pygame.init () screen = pygame.display.set_mode ((800,600), pygame.OPENGL|pygame.DOUBLEBUF, 24) glViewport (0, 0, 800, 600) glClearColor (0.0, 0.5, 0.5, 1.0) glEnableClientState (GL_VERTEX_ARRAY) vertices = [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0 ] vbo = glGenBuffers (1) glBindBuffer (GL_ARRAY_BUFFER, vbo) glBufferData (GL_ARRAY_BUFFER, len(vertices)*4, (c_float*len(vertices))(*vertices), GL_STATIC_DRAW) running = True while running: for event in pygame.event.get(): if event.type == pygame

2021-12-09 04:33:30    分类:技术分享    python   opengl   pygame   vbo   vertex-buffer

pygame 不适用于便携式 python(pygame not working with portable python)

问题 我试图让 pygame 与运行在 USB 记忆棒上的便携式 python 3.2.1.1 一起工作,但是当我使用以下代码时: import pygame, sys 它说: ImportError: No module named pygame 我的理解是 pygame 嵌入在便携式 python 中。 任何人都可以帮忙吗? 回答1 Pygame 没有嵌入在便携式 python 3.2 中。 它有 2.7 版本。 来源:http://portablepython.com/wiki/PortablePython3.2.1.1 - 3.2(这里没有 pygame!)http://portablepython.com/wiki/PortablePython2.7.3.1 - 2.7(嵌入了 Pygame!) 回答2 在便携式 Python 上运行 Pygame.... 在 Windows 7 上,下载 msi 文件并将其复制到您的便携式目录中。 双击 msi 文件。 当提示输入目录时,切换到 USB 驱动器。 完成后,将库和站点包内容复制到 USB 库和站点包。 要进行测试,请打开 Python 解释器,然后键入“import pygame”。 如果成功,您在导入时不会收到错误消息。

2021-12-09 04:24:54    分类:技术分享    python   pygame   portability

如何检测用户是否在 pygame 中双击了?(How can I detect if the user has double-clicked in pygame?)

问题 我知道我可以检查是否有左键单击 event.type == pygame.MOUSEBUTTONDOWN and event.button == LEFT 但是我如何检查他们是否双击了? 还有什么方法可以检查用户是向前还是向后移动滚轮? 回答1 我只是使用clock.tick返回的增量时间值来增加计时器。 在本例中,您有 0.5 秒的时间双击,否则计时器将重置。 import sys import pygame as pg pg.init() screen = pg.display.set_mode((640, 480)) BLACK = pg.Color('black') FONT = pg.font.Font(None, 32) def game(): clock = pg.time.Clock() timer = 0 dt = 0 running = True while running: for event in pg.event.get(): if event.type == pg.QUIT: running = False if event.type == pg.MOUSEBUTTONDOWN: if event.button == 1: if timer == 0: # First mouse click. timer = 0.001 # Start the

2021-12-08 19:59:26    分类:技术分享    python   pygame

Pygame:奇怪的 blitting 错误(Pygame: Weird blitting bug)

问题 我一直在用 Python 3.1 和 PyGame 2.7 开发一个简单的主菜单。 当鼠标光标在某个区域内时,屏幕上的文本应该变成白色。 我正在使用函数来闪烁屏幕。 第一个函数正常闪烁主菜单,其他两个函数闪烁菜单并突出显示一些文本。 以下是功能: def draw_main_menu(): #draw main menu normally screen.fill(BLACK) #clears screen #set up text new_text = menu_font.render('NEW GAME', 1, (100, 100, 100)) load_text = menu_font.render('LOAD GAME', 1, (100, 100, 100)) options_text = menu_font.render('OPTIONS', 1, (100, 100, 100)) quit_text = menu_font.render('QUIT', 1, (100, 100, 100)) #blit text screen.blit(new_text, (340, 425)) screen.blit(load_text, (335, 455)) screen.blit(options_text, (350, 485)) screen.blit(quit

2021-12-08 14:27:20    分类:技术分享    python   pygame

pygame 与 tkinter。(pygame vs tkinter.)

问题 我一直在网上搜索并阅读有关 Python 中 GUI 开发的信息,并了解到 Tkinter 是 Python 的最佳 GUI 工具包之一。 但我也知道 Pygame 是一个可以用于 GUI 的库。 由于我对编程还很陌生,有人可以解释一下 Pygame 和 Tkinter 之间的区别,以及应该在什么场合使用。 对于国际象棋引擎 GUI,这将是更好的选择。 非常感谢您提前。 回答1 首先,tkinter 绝对不是 Python 的最佳GUI 工具包。 它是最简单的之一,通常与 python 解释器一起提供。 但不如Qt、wx或Gtk强大。 pygame 是——顾名思义——一个包,旨在允许非常容易地在 python 中创建游戏,而不是创建 GUI。 因此,它提供了事件处理、图形声音绑定和其他一些对编写游戏有用的东西,并且它是在 SDL 之上编写的。 因此,如果您想编写 GUI 应用程序,请不要使用 pygame。 另一方面,GUI 工具包也可用于编写游戏。 一般来说,我会说它们比 pygame 更通用,但它们并没有真正的可比性。 这完全取决于您要编写的应用程序。 选择正确的工具通常非常重要。 回答2 Pygame 通常用于创建游戏,但我建议改用街机库。 Pygame 不帮助您创建 GUI。 相反,您应该使用专为 GUI 设计的 tkinter。 对于您的项目,我建议使用

2021-12-08 14:19:26    分类:技术分享    python   tkinter   pygame

Python:你如何在 pygame 上制作标题画面?(Python: How do you make a title screen on pygame?)

问题 你会如何在 pygame 中放入标题画面/结束画面? 使用 Enter 键继续,使用 Esc 键退出。 我有一个我个人用 photoshop 制作的标题屏幕,我想将它插入游戏的开头,然后让用户按 Enter 或 Esc。 我该怎么做? 回答1 网上有很多 Pygame 资源。 最近由 Al Sweigart 出版的一本书《用 Python 和 Pygame 制作游戏》有一些你所描述的例子。 特别是,看看下面的示例程序。 这有一些函数可以完成您想要执行的操作,即 showStartScreen()、checkForKeyPress() 和 drawPressKeyMsg() 函数。

2021-12-08 13:15:25    分类:技术分享    python   pygame   page-title

是什么导致了这个 AttributeError?(What is causing this AttributeError?)

问题 我一直在寻找解决方案,但没有找到,所以这是我的代码: class snakeGame: def _init_(self): pygame.init() self._isRunning = False self._surface = None self.drawList = None self.updateList = None self.resources = loadResources() self.width = 640 self.height = 400 self.size = [self.width,self.height] def run(self,args): self._surface = pygame.display.set_mode(self.size,pygame.HWSURFACE | pygame.DOUBLEBUF) self._isRunning = True 当“run”方法被调用时,python抛出一个AttributeError告诉我snakeGame的实例没有属性“size” 我对 python 还很陌生,并且 NNNOOO 知道为什么它看不到它。 有人能帮我吗? 这也只是我的代码中的一小段。 如果您需要更多,请询问。 我只是想问题可能出在这里的某个地方。 回答1 init 函数前后需要两个下划线: __init__ 。 _init

2021-12-08 10:58:15    分类:技术分享    python   pygame   attributeerror

在 Tkinter 中使用 pygame 功能(Using pygame features in Tkinter)

问题 我想在我在 Tkinter 中制作的 GUI 中使用 pygame(精灵图形)的一些功能。 我知道 OcempGUI,但我更愿意坚持使用 Tkinter,只需使用 pygame 中的一些模块。 这很相似,但又不完全相同。 这可能吗? 什么是潜在问题(事件循环)? 回答1 这适用于 Linux。 如果幸运的话,它也可能适用于其他操作系统。 import Tkinter as tk import os w, h = 500, 200 # Add a couple widgets. We're going to put pygame in `embed`. root = tk.Tk() embed = tk.Frame(root, width=w, height=h) embed.pack() text = tk.Button(root, text='Blah.') text.pack() # Tell pygame's SDL window which window ID to use os.environ['SDL_WINDOWID'] = str(embed.winfo_id()) # The wxPython wiki says you might need the following line on Windows # (http://wiki.wxpython.org

2021-12-08 08:12:09    分类:技术分享    user-interface   tkinter   pygame

Pygame 制作一个精灵面对鼠标 [重复](Pygame Making A Sprite Face The Mouse [duplicate])

问题 这个问题在这里已经有了答案: 无法理解如何在 PyGame 中制作角色面部鼠标(2 个回答) 如何让我的播放器向鼠标位置旋转? [重复] (1 个回答) 如何使用 Pygame 围绕其中心旋转图像? (6 个回答) 去年关闭。 我是 Pygame 的新手,但在 Python 上还不错,我正在创建一个带有俯视图的僵尸射击游戏。 按箭头键时,我设法使角色移动。 但现在我需要让玩家面对鼠标/光标,而无需一直点击屏幕。 任何帮助? 回答1 for event in pygame.event.get(): if event.type == MOUSEMOTION: mousex, mousey = event.pos # build a vector between player position and mouse position moveVector = (mousex-playerx, mousey-playery) """ compute the angle of moveVector from current vector that player is facing (faceVector). you should be keeping and updating this unit vector, with each mouse motion assume you have

2021-12-07 03:52:02    分类:技术分享    python   sprite   pygame

如何在pygame中使圆从一个角到另一个角对角移动(How to make a circle move diagonally from corner to corner in pygame)

问题 我创建了一个程序来为形状设置动画,我只移动了 x 轴或 y 轴,从来没有同时移动过这两个轴。 所以对角移动对我来说是全新的。 下面是我的代码: """ Author: Victor Xu Date: January 20th, 2021 Description: Animating Shapes with pygame """ """ 1. Modify the animation of the red_box so that when it hits the left or right side of the window it changes direction. (COMPLETED) 2. Add a green_rect (40x20) Surface that moves in up and down. It should change its y direction when it hits to top or bottom of the window. (COMPLETED) 3. Add a blue_circle (24x24) Surface that moves in a diagonal path. If it hits the top or bottom of the window reverse its y direction, and if

2021-12-06 20:42:27    分类:技术分享    python   pygame