安卓上的Pygame
我想知道有没有人能详细解释一下,怎么把用Pygame开发的游戏或应用程序在安卓手机上运行。我最近完成了一个吃豆人的程序,在我的电脑上运行得很好,但我觉得如果能在手机上运行就太棒了。我试着按照http://pygame.renpy.org/android-packaging.html上的说明来做,但每次在IDLE里运行“import android”时,都会出现错误,提示找不到这个模块。能不能清楚地解释一下怎么设置这个安卓模块?
另外,在我的程序里,我用了这样的代码:if (event.key == K_UP or event.key == K_w): direction = UP
。但是手机上没有箭头键。我需要用什么代码来判断用户是否用手指在屏幕上从上到下或从左到右滑动呢?
8 个回答
关于你的第二个问题,另一个网站上有个答案。
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)
希望这对你有帮助。
你提到的第一个问题已经有很多不错的回答了,所以我就不再回答了。(我也是来这里找解决方案的!)
不过,你问题的第二部分应该简单得多。
你可以创建一个鼠标对象,当鼠标按下时,记录下触摸的坐标到两个变量MX和MY中。然后,当鼠标抬起时,获取新的坐标,并用MX和MY以及这个新点来计算一个向量,也就是滑动的距离和角度。你可以使用三角函数或者数学模块来计算角度(可以查一下arctan2这个函数)。
接着,你可以用if、elif和else来判断这个角度属于哪个象限,并通过距离来判断这个滑动是否有效,如果距离大于某个值的话。
我现在在手机上,所以不能给你一个例子,但我相信有了这些指导,你一定能找到解决方案。
我在安卓上成功运行了pygame!!!
首先,我通过把错误信息保存到文件来调试这个应用。发现一个问题,就是在安卓上只能全屏运行。
我创建了一个小应用,它可以正常工作:
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文件的大小只有12MB!
我觉得pygame在安卓上的版本还不错,但我不太相信它的功能。我用kivy,因为它可以在不同平台上使用。如果你决定在安卓上用pygame的版本,那么你在安卓设备上触摸屏幕的动作就相当于在电脑上移动鼠标。所以我想说的是,把触摸当作鼠标来使用。祝你好运!
有一个专门为安卓系统设计的pyGame版本。不过,要使用这个版本,你需要对程序进行一些特别的修改和调整。希望这不会太难。
http://pygame.renpy.org/writing.html
http://pygame.renpy.org/index.html
至于你第二个问题,我还不能回答,因为我经验还不够。