为Python制作一个需要另一个扩展的C语言扩展
我有几个Python功能,我用来更轻松地使用PyGame进行游戏开发.我将它们放在我的Python-Path中的一个名为Helper.py的文件中,因此我可以从制作的任何游戏中导入它们.我认为,作为了解Python扩展的一种练习,将此模块转换为C.我的第一个问题是我需要使用Pygame的功能,我不确定是否可能. Pygame安装了一些标头文件,但它们似乎没有Python函数的C版本.也许我缺少一些东西. 我该如何解决?作为解决方法,该功能当前接受函数参数并调用该功能,但这不是理想的解决方案. 使用Windows XP,Python 2.6和Pygame 1.9.1,顺便说一句. 解决方案 /* get the sys.modules dictionary */ PyObject* sysmodules PyImport_GetModuleDict(); PyObject* pygame_module; if(PyMapping_HasKeyString(sysmodu
6 2024-04-07
编程技术问答社区
在Pygame中通过点击按钮调用函数
我在下面的代码中在PyGame中获得了一个带有按钮的屏幕.现在,我想单击按钮,然后开始random()函数,5秒钟后,它从开始使用按钮返回到屏幕,让我选择再次单击并再次调用随机函数. def loop(): clock = pygame.time.Clock() number = 0 # The button is just a rect. button = pygame.Rect(300,300,205,80) done = False while not done: for event in pygame.event.get(): if event.type == pygame.QUIT: done = True # This block is executed once for each MOUSEBUTTONDOWN event.
12 2024-04-05
编程技术问答社区
Pygame中按钮内的进度条
所需的行为是: 当用户将鼠标固定在按钮上时,将出现深灰色进度条,并开始以恒定的速度增加.我希望能够确定它完全填充需要多长时间(例如2秒). 如果鼠标在进度条达到100%之前移出按钮,则进度条应直接达到0%. 如果栏达到100%,则该程序应在终端中打印一些东西. 这是代码: import sys import pygame import time from pygame.locals import * from os import path pygame.init() screen = pygame.display.set_mode((900, int(900 * (16 / 9)))) clock = pygame.time.Clock() BLACK = (0, 0, 0) GREEN = (0, 255, 0) WHITE = (255, 255, 255) BACKGROUND_COLOR = (237, 225, 192) LIGHT_GRAY = (
12 2024-04-05
编程技术问答社区
为什么按钮不画?
我不明白为什么该按钮不借鉴以前工作的背景 这没有显示错误. 这是代码------> 这个代码错误吗?我的问题甚至可再现吗?它可能是在按钮的代码中,我希望帮助 import pygame pygame.init() screen = pygame.display.set_mode((3840,2160)) running = True mouse = pygame.mouse.get_pos() pygame.display.set_caption("GermanBall") bg = pygame.image.load(r"C:\Users\tomarj\OneDrive - Tata Advanced Systems Limited\Desktop\War Crime\Tan.jpg") icon = pygame.image.load(r"C:\Users\tomarj\OneDrive - Tata Advanced Systems Limited\Desktop\War
12 2024-04-05
编程技术问答社区
在Pygame中基于点击而改变图像
我已经进行了Google搜索,并搜索了我的两本Python初学者书籍,以查找如何做到这一点.我认为这必须是一项简单的任务.基本上,我正在与Python一起工作. 我希望,如果我单击button1_image,它会更改为button1select_image,对吗?如果单击button2_image,它将设置button1select_image返回到button1_image,而button2_image更改为button2select_image. 因此,我想知道的是,如果其他语句是简单的,还是更复杂.显然,这些按钮以后会做其他事情,但是我找不到有关如何根据用户鼠标的单击来执行此类操作的教程. # Button Mouse Click Image Change # Demonstrates changing from one button image to another based on click of mouse. from livewires import
8 2024-04-05
编程技术问答社区
如何在Python/pygame中制作按钮?
我正在使用Pygame进行游戏,在第一个屏幕上,我希望有可以按下(i)启动游戏的按钮,(ii)加载带有指令的新屏幕,(iii)退出程序. 我已经在线找到了该代码以进行按钮制作,但是我并不真正理解它(我在面向对象的编程方面不太擅长).如果我能得到一些解释,那就太好了.另外,当我使用它并尝试使用文件路径在计算机上打开文件时,我会得到错误sh:filepath:允许拒绝,我不知道该如何解决. #load_image is used in most pygame programs for loading images def load_image(name, colorkey=None): fullname = os.path.join('data', name) try: image = pygame.image.load(fullname) except pygame.error, message: print 'Canno
24 2024-04-05
编程技术问答社区
我需要在我的矩形中添加文本,我该怎么做呢?
我需要将文本绘制到按钮中,该按钮可以看作是程序中的四个较小的矩形,我还需要将文本绘制到标题上.我不确定如何做到这一点,作为我的程序的结构,与我所看到的其他人不同. 遵循其他问题,以及他们在尝试影响我的试图影响我的答案. import pygame import sys def main(): pygame.init() clock = pygame.time.Clock() fps = 60 size = [700, 600] bg = [255, 255, 255] font = pygame.font.Font('freesansbold.ttf', 32) screen = pygame.display.set_mode(size) black = (0, 0, 0) button = pygame.Rect(400, 400, 250, 125) button2 = pygam
12 2024-04-05
编程技术问答社区
Pygame按钮单次点击
我在pygame中制作了单击事件的按钮,但是有一个问题.当我单击鼠标按钮并在按钮边界之间移动鼠标时,单击事件正在重复自身. 我只想单击一次,直到发布鼠标按钮. 我该怎么做? import pygame,time pygame.init() x,y = (200,300) pencere = pygame.display.set_mode((x,y)) pygame.display.set_caption("Click") white = (255,255,255) black = (0,0,0) black2 = (30,30,30) class Counter: count = 0 def click(self): self.count += 1 number = Counter() def text_objects(text, font, color): textSurface = font.render(text, True, c
18 2024-04-05
编程技术问答社区
Python pygame exe build with cx_freeze TCL_LIBRARY错误
我正在关注本教程import cx_Freeze executables = [cx_Freeze.Executable("snake.py")] cx_Freeze.setup( name="Snake", options={"build_exe":{"packages":["pygame"], "include_files":["apple.png","Aenemy.png","bomb.png","cherry.png","enemy.png","fire.png","iceimg.png","snakebod(2).png","snakebod.png","Explosion.wav","Explosion2.wav","jump.wav","Pickup_Coin.wav","Powerup.wav","openingsong.mp3","highscores.txt",]}}, description = "Snake Game made in python with pyg
8 2024-04-05
编程技术问答社区
在buildozer上使用Pygame构建APK不起作用
我正在尝试使用PyGame使用Buildozer构建APK.尽管Buildozer主要用于Kivy应用程序,但认为它也应该使用Pygame起作用.但是我创建的APK不会在电话上运行. 那么使用PyGame需要一些依赖性吗?还是我应该使用pygame_sdl2(pygame不是为android吗?),还是应该和kivy一起使用pygame?如果是这样,我该怎么办? 解决方案 buildozer/python-for-indroid不支持pygame.即使我们维护了Pygame Bootstap,它也可能对普通Pygame应用程序运行不佳 - 而是它是一个修改版本,仅用作为Kivy的窗口后端. pygame_sdl2应该有效,但是python-for android当前没有构建食谱.如果您想查看它应该很容易添加一个.
18 2024-04-04
编程技术问答社区
在pybox2d的物理模拟中,身体没有下降
我正在进行一个物理模拟,其中我在鼠标点击位置创建身体,但由于重力而不会下降. 为什么它不会掉落以及如何使其掉落? 我正在发布我的代码以供您参考. 类盒 import pygame from Box2D import (b2EdgeShape, b2FixtureDef, b2PolygonShape, b2_dynamicBody, b2_kinematicBody, b2_staticBody, b2World) class Box: def __init__(self, x, y, PPM): self.x = x / PPM self.y = y / PPM self.w = .2 self.h = .2 self.world = b2World() self.attachment = self.world.CreateDyn
14 2024-04-03
编程技术问答社区
如何使用PyBox2d检测碰撞并使用该信息
我试图通过重现此示例来过滤我的Box2D世界中发生的碰撞: https://github.com/pybox2d/pybox2d/blob/master/master/examples/collision_filtering.py 我在世界上有四个类,汽车,车轮,建筑和行人,我想过滤哪个实例与哪个可能的输出相撞(伪代码) if contact.FixtureA.isinstance(Pedestrian) and contact.FixtureB.isinstance(Car): print("You have caused a traffic accident") 我有这组类别 CAR_CATEGORY = 2 PEDESTRIAN_CATEGORY = 4 BUILDING_CATEGORY = 8 box2world = world(gravity =(0.0, 0.0), doSleep =True) 我也尝试了以下操作:但是它不起作用(它无能
10 2024-04-03
编程技术问答社区
使用Python来验证鼠标位置是否在圆圈内,当点击圆圈内任何地方时。
我正在研究Python中的一个项目,该项目是确定一个人的多任务效率.该项目的一部分是让用户使用鼠标在屏幕上响应事件.我决定将用户点击在球中.但是,我在验证鼠标光标实际上处于圆圈的范围内时,我的代码有问题. 所讨论方法的代码如下.圆的半径为10. #boolean method to determine if the cursor is within the position of the circle @classmethod def is_valid_mouse_click_position(cls, the_ball, mouse_position): return (mouse_position) == ((range((the_ball.x - 10),(the_ball.x + 10)), range((the_ball.y + 10), (the_ball.
10 2024-04-01
编程技术问答社区
构建具有完整图像支持的Pygame?
我正在尝试创建图形应用程序,并使用Pygame作为我的库.但是,为了加载非BMP文件,我需要构建具有完整图像支持的Python. The image module is a required dependency of Pygame, but it only optionally supports any extended file formats. By default it can only load uncompressed BMP images. When built with full image support, the pygame.image.load - load new image from a file function can support the following formats. 我该怎么做? 解决方案 图像模块是pil-您可以在这里获取 - http://www.pypythonware .com/products/pil
10 2024-04-01
编程技术问答社区
Python Pygame不能正确显示图片
我是Python的新手,我开始学习Eric Matthes的" Python速成课程".我正处于Pygame章节的开头,并且遵循代码,但是我的加载图像总是看起来受损,我不知道为什么.代码来自书.第一个文件: import pygame class Ship(): def __init__(self, screen): """Initialize the ship and set its starting position.""" # Load the ship image and get its rect. self.image = pygame.image.load('ship.bmp') self.screen = screen self.rect = self.image.get_rect() self.screen
14 2024-04-01
编程技术问答社区
OBJFileLoader中的错误
objfileleloader.py文件中有错误的链接 - wiki/objfileLeLoader . 我认为有python2到python3版本错误,但是我尝试更改 rist valueerror 的东西,并将obj用作 obj =(filename) 但仍然有很多错误. 我从Blender获取了.OBJ文件,我认为这不是问题. 谁能告诉我 python3 的确切objfileLelododer 错误 - Traceback (most recent call last): File "/home/warted/anaconda3/lib/python3.6/site-packages/OpenGL/latebind.py", line 41, in __call__ return self._finalCall( *args, **named ) TypeError: 'NoneType' object is not callable Duri
10 2024-04-01
编程技术问答社区
Mac上的Pygame在加载图像时出现错误
我最近开始在Pygame上编程,我使用Python 3.5.1和最新的Pygame,当我加载位图(BMP)时,它将其放在屏幕上,例如此 在我在计算机上编程时,它可以在我的MacBook Pro 13''上使用El Capitain import pygame #imports pygame width = 550 #width is 550 height = 420 #height is 420 size = width, height # size is a tuple screen = pygame.display.set_mode(size) white = 255,225,255 screen.fill(white) gameOn = True mario = pygame.image.load("mario.bmp") #load the bitmap marioflip = pygame.transform.flip(mar
6 2024-03-31
编程技术问答社区
如何在Pygame中制作更厚的贝塞尔曲线?
我正在Pygame构建专门的节点编辑器.每个节点将与较BESZER曲线连接.该曲线是通过首先单击节点来构建的.在鼠标光标和节点之间绘制一个bezier,然后单击第二个节点后,bezier行已修复.我的代码已经可以绘制曲线并遵循鼠标光标.我的问题是曲线太薄了.有人知道一种轻松在pygame.gfxdraw.beier中指定宽度的方法吗?另外,我不知道论点" 6"与什么相对应;我只知道没有它的代码将无法正常工作. # This draws the bezier curve for the node editor x, y = pygame.mouse.get_pos() b_points = [(380,390),(410,385),(425,405), (425, y), (x, y)] pygame.gfxdraw.bezier(screen, b_points, 6, blue) 解决方案 简单答案:您不能,至少不是 pygame.gfxdraw 或 a>.你必须自己做.
8 2024-03-30
编程技术问答社区
制作Python批处理文件
如何创建一个BAT文件来运行Python文件,特别包含PyGame. 解决方案 所有的蝙蝠文件都是一个纯文本文件(我是纯文本,而不是MS Word),带有命令列表. 例如,如果您会从命令行打开游戏: python MyGame.py 然后,您要做的就是创建一个包含该文件的文件.将扩展名更改为.bat,您已经完成了. 其他解决方案 简单. 将以下内容作为批处理文件的第一行: python -x %0 %* &goto :eof 批处理文件的其余部分是Python程序.这是一个完整的示例: python -x %0 %* &goto :eof import sys print "this is a batch file" sys.exit() 首先是一个定界符,允许第一行包含两个单独的批处理命令.第一个运行python,第二个命令跳过批处理文件的其余部分,即Python代码,而不是批处理语言. -x是一个跳过文件的第
6 2024-03-29
编程技术问答社区
Python:在Ubuntu上通过Bash在Windows上运行pygame
我最近已经安装并一直在玩 ubuntu上的ubuntu上的bash .在大多数情况下,它效果很好.我正在尝试通过BUW运行Pygame脚本,但它不会在弹出窗口中渲染图形.相反,它似乎包含在bash窗口中,看起来像这样: 这是Pygame的失落原因吗?我可以在这里做什么来运行它吗? 解决方案 来自 faq 您链接的页面上到: 我可以在WSL? 中运行所有Linux应用程序 不! WSL是一种工具,旨在使需要他们运行bash的用户 Windows上的Core Linux命令行工具. wsl并不旨在支持GUI桌面或应用程序(例如Gnome, KDE等) 其他解决方案 pygame在SDL上运行.用Ubuntu运送的SDL版本需要* XServer运行.找出如何在Windows上的Ubuntu上在Ubuntu上运行XServer. 这个问题可能会提供这些步骤:如何在Windows 10 Bash上使用X Windows? *它需要一些渲染的东西,
14 2024-03-28
编程技术问答社区