Android 上的 Pygame

问题描述 投票:0回答:8

我想知道是否有人可以给我详细解释如何在 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 python pygame
8个回答
12
投票

有一个适用于 android 的 pyGame 子集。然而,这需要特殊的返工和更改程序。希望不会太难。

http://pygame.renpy.org/writing.html

http://pygame.renpy.org/index.html

但是关于你的第二个问题我无法回答,因为我还没有足够的经验。


3
投票

我认为 android 的 pygame 子集会很好,但我不相信它的功能,我使用 kivy 作为它的跨平台 如果你决定使用 Android 的 pygame 子集,你在 Android 设备屏幕上的翻转触摸将是你在桌面上的鼠标移动,所以我想说的是,将触摸视为鼠标,祝你好运


3
投票

我已经运行了 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))

截图:https://i.stack.imgur.com/4qXPe.png
规范文件中的要求:

requirements = python3,pygame

APK 文件大小仅为 12 MB!


2
投票

您的第一部分已经有一些很好的答案,所以我不会回答这个问题。 (我也来这里研究用它来做什么!)

但是你问题的第二部分应该容易得多。

有一个鼠标对象,在鼠标按下事件时将触摸的坐标保存到 MX 和 MY 变量 然后,当触发鼠标向上事件时,将获取新坐标并使用 MX 和 MY 以及这个新点计算向量。滑动的距离和角度。使用三角函数或数学模块计算角度(研究 arctan2)。

然后,您可以在 if、elif、else 中使用它来确定角度所在的象限以及距离,如果大于某个值,则确定滑动是否有效。

我使用的是移动设备,因此遗憾的是我无法给出示例,但我确信您很容易根据本指南找到解决方案。


1
投票

你的第二个问题,在另一个网站上有答案。

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)

希望对你有帮助。


0
投票

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、捏合、旋转、手指数量


0
投票

将 Python 应用程序导入 Android APK - https://github.com/kivy/python-for-android/

适用于 Android 和 iOS 的通用 Python 打包器 - https://buildozer.readthedocs.io/en/latest/


0
投票

嘿我可以帮助你解决第二个问题 首先,由于 Android 上没有按键,您需要制作按钮并使用它们来观看此视频,这非常有帮助: https://youtu.be/G8MYGDf_9ho?si=JE8l7EjHE3NkXe6z 该视频将帮助您创建按钮来控制您的游戏。视频中 14:55 有一段他使用了函数 if start_button.draw():

您只需将使用该教程中的图像制作的按钮代替 star_button ,并在此 if 条件下根据您的代码编写 我希望这对你有用 对于你的第一个问题,我不确定,但你可能需要先导入 kivy,因为当我尝试在手机的 pydroid 3 应用程序中导入 Android 时,python 解释器说 Android 位于 kivy 模块内,所以我需要先导入它

© www.soinside.com 2019 - 2024. All rights reserved.