用kivy 1.9构建的基于网格的游戏框架

kivy-okapi的Python项目详细描述


##okapi

kivy创建了自己独特的snowflake环境,然后提供了一个"kivy"命令行实用程序,在最终启动python解释器之前对"pythonpath"进行了大量修改。因此,虚拟环境是不可用的,因为在使用"kivy"之后,它们的任何包都不能导入。

1。[下载Kivy安装程序](http://kivy.org/docs/installation/installation.html)并使用它安装Kivy。
2.接下来,使用kivy的'pip'从pypi安装'okapi':`$kivy-m pip安装kivy okapi`

所有的okapi库都将可用。



提供这个最基本的框架:

``py
okapi
from okapi.app import okapi as okapiapp

=【br/>project路径=project路径



def get应用程序名(self):
return"我的游戏"


你的项目定义返回根小部件的"build()"函数需要main"app"类。对于"okapi",该根小部件属于"screenmanager"类。这个小部件的工作是交换输入和输出屏幕、游戏屏幕、菜单屏幕、高分屏幕等。


在啮齿动物复仇游戏中提供了一个覆盖"screenmanager"类的示例,但这里有一个最简单的例子:

``py
okapi
from okapi.screen\u manager导入screenmanager as okapiscreenmanager


""可选。


有一个点击监听器。
`OkapiScreenManager`将监听该点击并开始游戏。
"
return welcomescreen()


def get_screen_from_game(self):
""
必需。

启动并呈现游戏。
"
"返回self.game.get戋screen()

```



您的"screenmanager"会跟踪"current_screen"属性
,每当此属性更改时,它会从上一个屏幕中注销任何时钟侦听器并注册新屏幕的时钟侦听器。

要注册时钟处理程序,像这样定义它们:

``py
okapi
from okapi.screen import screen



class somescreen(screen):


def every_second(self):
do stuff

def every_other_second(self):
#选项1
返回(self.every_second,1.0,)

或选项2
返回(
(self.every_second,1.0,),
(self.every_other_second,2.0,),
````

"screenmanager"类还将向下钻取并检查屏幕的所有顶级子级,以查看是否有时钟侦听器。



`当前屏幕`。收听"向下箭头"的点击:来自okapi.screen import screen的







在"按"上按"命令"(self):
"做事情"(do stuff

"定义"(def on"按"上的"alt\u shift"(self):
"做事情"(do stuff

`````

以上定义也适用于"游戏"类。

如果按了>;1个修改键("shift"、"command"、"alt"等),则它们将按字母顺序排列为了保持一致性。

像这样定义:


``py
每秒
时钟间隔=1.0

默认为空白地面——空白可行走空间
空白地面字符='。

可能无法通过,或者可能包含不同角色的


def on_按下(self):
向下移动一些东西!

```



假设您正在构建一个象棋应用程序。要移动一个骑士,你可以打这样的电话:

``py
self.game.move_actor(self.white_knight_1,1,2)
````


这将立即引起复活,显示白色骑士刚刚移动过。



目标地面的'can_acpatate()'方法。默认情况下,这会拒绝进入被占领土。当然,这个规则对国际象棋来说没有什么意义,因此在这个例子中,您需要重写该函数,以便随时接受新棋子,并从游戏中删除当前在该位置找到的任何棋子。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java log4j2:日期/转换模式不起作用   带循环变量的java作用域   java如何在程序中使用Tess4j?   单元测试在ANT构建工具中设置系统变量,并使用Syste在Java中读取。getEnv(“ABC_主页”)   java如何将存储在单个字节(长字节)中的值分离?   执行用java编写的脚本后遇到错误(Selenium WEbdriver)   java使用freemarker生成html以在电子邮件中发送,他们是否打算使用呈现的jsp页面?   rdfa希望使用Java从网页中提取RDF   java无法解析SQLException:ColumnIndex超出范围   java使用TCP/IP拦截http文件上载   用于文件过滤的正则表达式Java正则表达式   java使用Spring@Query注释删除MongoDB文档中数组字段的对象   SwingJava:如何设置。gif的大小与框架的大小相同   java AWS签名不正确   将枚举集合作为参数列表的java Hibernate filterdef/filter转换为VARBINARY