我想知道是否有人可以给我详细解释如何在 Android 手机上运行使用 Pygame 开发的游戏/应用程序。我最近完成了 PacMan 的编程,它在我的电脑上运行得很好,但我认为如果我能让它在我的手机上运行那就太棒了。我尝试按照 http://pygame.renpy.org/android-packaging.html 上的说明进行操作,但每次我在 IDLE 上运行“import android”时都会收到一条错误消息,说它没有找到该模块。有人能清楚地解释一下如何设置android模块吗?
此外,在我的程序中,我使用了诸如
if (event.key == K_UP or event.key == K_w): direction = UP
之类的代码。然而,手机上没有箭头键。我需要使用什么代码来查看用户是否用手指从上 -> 下或左 -> 右等滑动屏幕。
有一个适用于 android 的 pyGame 子集。然而,这需要特殊的返工和更改程序。希望不会太难。
http://pygame.renpy.org/writing.html
http://pygame.renpy.org/index.html
但是关于你的第二个问题我无法回答,因为我还没有足够的经验。
我认为 android 的 pygame 子集会很好,但我不相信它的功能,我使用 kivy 作为它的跨平台 如果你决定使用 Android 的 pygame 子集,你在 Android 设备屏幕上的翻转触摸将是你在桌面上的鼠标移动,所以我想说的是,将触摸视为鼠标,祝你好运
我已经运行了 Android 版 pygame!!!!
首先,我使用将错误保存到文件来调试应用程序。 我收到错误消息,在 Android 上它只能在全屏下运行。 我创建了一个小应用程序并且它可以工作:
import sys, os
andr = None
try:
import android
andr = True
except ImportError:
andr = False
try:
import pygame
import sys
import pygame
import random
import time
from pygame.locals import *
pygame.init()
fps = 1 / 3
width, height = 640, 480
screen = pygame.display.set_mode((width, height), FULLSCREEN if andr else 0)
width, height = pygame.display.get_surface().get_size()
while True:
screen.fill((random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.flip()
time.sleep(fps)
except Exception as e:
open('error.txt', 'w').write(str(e))
requirements = python3,pygame
APK 文件大小仅为 12 MB!
您的第一部分已经有一些很好的答案,所以我不会回答这个问题。 (我也来这里研究用它来做什么!)
但是你问题的第二部分应该容易得多。
有一个鼠标对象,在鼠标按下事件时将触摸的坐标保存到 MX 和 MY 变量 然后,当触发鼠标向上事件时,将获取新坐标并使用 MX 和 MY 以及这个新点计算向量。滑动的距离和角度。使用三角函数或数学模块计算角度(研究 arctan2)。
然后,您可以在 if、elif、else 中使用它来确定角度所在的象限以及距离,如果大于某个值,则确定滑动是否有效。
我使用的是移动设备,因此遗憾的是我无法给出示例,但我确信您很容易根据本指南找到解决方案。
你的第二个问题,在另一个网站上有答案。
https://amp.reddit.com/r/Python/comments/2ak14j/made_my_first_android_app_in_under_5_hours_using/
它说你可以尝试这样的代码
if android:
android.map_key(android.KEYCODE_BACK, pygame.K_ESCAPE)
希望对你有帮助。
pygame.event 有多个触屏事件。以下是一些有用的:
手指运动:touch_id、finger_id、x、y、dx、dy
FINGERDOWN:touch_id,finger_id,x,y,dx,dy
手指:touch_id,finger_id,x,y,dx,dy
多重手势:touch_id、x、y、捏合、旋转、手指数量
将 Python 应用程序导入 Android APK - https://github.com/kivy/python-for-android/
适用于 Android 和 iOS 的通用 Python 打包器 - https://buildozer.readthedocs.io/en/latest/
嘿我可以帮助你解决第二个问题 首先,由于 Android 上没有按键,您需要制作按钮并使用它们来观看此视频,这非常有帮助: https://youtu.be/G8MYGDf_9ho?si=JE8l7EjHE3NkXe6z 该视频将帮助您创建按钮来控制您的游戏。视频中 14:55 有一段他使用了函数 if start_button.draw():
您只需将使用该教程中的图像制作的按钮代替 star_button ,并在此 if 条件下根据您的代码编写 我希望这对你有用 对于你的第一个问题,我不确定,但你可能需要先导入 kivy,因为当我尝试在手机的 pydroid 3 应用程序中导入 Android 时,python 解释器说 Android 位于 kivy 模块内,所以我需要先导入它