一个最小的,包括电池,二维游戏引擎使用基于网格的图形。

gamestorm的Python项目详细描述


GameStorm-库

欢迎!

什么是GameStorm?

gamestorm是一个包含电池的python包,它可以帮助您轻松地制作基于网格的小型游戏,并且只需很少的代码。它是建立在pygame之上的,pygame是一个非常灵活和出色的2d游戏引擎。

https://www.pygame.org

小?基于网格的?你能给我举个例子吗?

当然!看下图。这是一个使用GameStorm开箱即用的例子(记住,包括电池)!

示例1

示例图像1

示例2

示例图像2

"包括电池"是什么意思?

这就意味着gamestorm拥有你制作一个小游戏所需的一切?示例图形、文本和声音已经存在。你可以用你自己的,但你不必!另外,GameStorm已经预先配置好可以使用特定的键盘键和游戏板!

GameStorm似乎有限。重点是什么?

好问题。GameStorm有三个目的:

  1. 学习。GameStorm使学习游戏编程变得容易。事实上,为什么不在gamestorm中学习编程呢?图形内容可能比文本更有趣("hello world!")
  2. 原型制作。GameStorm让你能够很容易地设计出一个游戏创意。当然,这个想法必须使用网格,但很多游戏都需要这样做:象棋、俄罗斯方块、索科班。使用网格和平铺可以做很多事情。
  3. 有趣!做游戏很有趣。与学习使用成熟的游戏引擎相比,在屏幕上快速看到你的概念更有趣。

我很好奇。我怎么能试试这个?

首先,使用pip安装它:

pip安装gamestorm

然后继续阅读以获取更详细的说明。享受!

GameStorm文档

在查看任何代码之前,您应该了解gamestorm使用的系统和约定。它简单有效。

游戏风暴"系统"

网格

网格是视觉游戏区。它占据了整个窗户。你可以指定它的大小。网格由包含平铺的列和行组成。除了设置网格之外,您对网格的处理不多。主要是用瓷砖来工作。

瓷砖

这些是游戏的主要资源。网格中的每个"单元格"都是一个平铺。平铺有三个主要组件:背景、符号和光标,它们按此顺序绘制。可以对磁贴及其组件执行各种操作。例如:

  • 设置所有瓷砖的背景。
  • 设置特定平铺的符号。
  • 清除(移除)特定磁贴的光标。
  • 从特定的平铺开始绘制一些文本。
  • 清除所有瓷砖的所有组件。

有关瓷砖的所有可用方法,请参见API文档。

下图包含磁贴及其组件的示意图。

tile example

瓷砖分解图

gamestorm的本质是操纵这些组件来制作一个小而有趣的游戏。请记住,已经包含了上百个示例背景、符号和光标。如果你不想担心关于图形资产的讨论刚刚开始。

文本

你可以在gamestorm游戏中绘制文本。它非常有限。只有一种字体。每个字符被绘制到一个单独的平铺上。选择此方法是为了使api尽可能简单。幸运的是,您可以使用一种简单的方法从所需的平铺开始绘制所需的文本。

  • 注意:覆盖字体尚不可能,但希望很快就会出现。

绘制/渲染

绘图——也就是说,对屏幕的实际渲染——是故意完成的。这就是说,您可以操纵所有想要的平铺的背景、符号和光标,然后通过调用"draw"来执行渲染。例如,将符号设置为平铺时不会绘制该符号。相反,它将等待您调用"draw"。

输入

对于输入,gamestorm使用键盘或游戏板。有一些简单的方法,用于检查何时按下了某个键/按钮。为了简单起见,输入仅限于出现在snes游戏板上的按钮数。也就是说,键盘和游戏板仅限于以下键:

<表><广告>名称游戏板键盘 < /广告><正文> Up/Td> Up/Td>向上箭头向下向下向下箭头左左左箭头右右右箭头按钮1按钮1键1按钮2按钮2键2按钮3按钮3键3按钮4按钮4键4按钮5按钮5键5按钮6按钮6键6选择选择 tab < /td>开始开始输入退出无 ESC
  • 注意:重新映射按键或游戏板按钮尚不可能,但希望很快就能实现。

在任何时候,你都可以做一个游戏,并使用游戏板来控制它!

SoundFX和音乐

在GameStorm中,有两种声音:SoundFX和Music。音乐是在游戏运行时播放的较长的音频。SoundFX是一些小的音频示例,用于在特定事件上播放。例如,当游戏中的某个东西被破坏时,您可以播放爆炸声,或者当您将光标从一个磁贴移到另一个磁贴时,您可以播放"哔"声。

GameStorm有一些内置的音乐曲目和许多SoundFX,因此您可以立即将声音放入游戏中。如果愿意,您可以使用自己的音乐和声音。

准备好了吗?

如果您准备好查看一些代码,请继续阅读。

代码

让我们从一个简单的例子开始;我们对Hello World的看法。

importgamestormnum_tiles_x=15num_tiles_y=7screen_width=1280screen_height=720#these two lines are requiredg=gamestorm.GameStorm()g.init(num_tiles_x,num_tiles_y,screen_width,screen_height,title='Hello World')#set up some stuff to draw soon!g.set_all_tiles_background(25)g.set_tile_symbol(6,4,196)g.set_tile_symbol(7,4,196)g.set_tile_symbol(8,4,196)g.set_tile_cursor(7,4,1)g.draw_text(2,1,'Hello World!')#perform the drawg.draw()#check for the exit event to quitwhileTrue:events=g.get_events()ifg.is_exit_button_pressed(events):g.quit()break

这个小脚本将呈现下图中的内容。

Hello World

正如我们承诺的那样;简单!我们不会在这里演示声音的使用,但我们向您保证,api是非常直截了当的,您只需阅读api文档就可以知道如何播放声音了

结论

我们希望你喜欢gamestorm。我们希望这有助于激励学生、程序员、制作人等。享受!

用于开发GameStorm库

如果您想帮助完成这个项目-首先,谢谢-这里有一些有用的提示。

通过创建virtualenv环境(python3)进行安装,然后

PIP安装。

通过运行来运行测试

nos2测试

运行sampl从上面的程序开始。它是名为sample program.py的文件

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

推荐PyPI第三方库


热门话题
使用“Google Play Api Client Library for Java”时,Google Play Api默认为“仅限我”   Java REST web服务如何使用复杂的XML   java提供了这个供应链问题的递归解决方案   java找不到适合jdbc的驱动程序?   java IntelliJ Git集成插件>“新分支”将大写字母F放在“功能/abc”中   多线程Java线程间共享变量   HibernateJava。util。自定义包装枚举类型不支持TreeSet集合类型   JAVAsocket调用次数过多   java有没有办法在没有附加库的情况下启动代理?   javaudp优化   java动态检索rj的路径。jar(OS X中的classes.jar)   在Java中解析DTD   playframework 2.1.4java如何使用@options helper,并将Map<String,String>作为参数   java rest web服务中的web服务异步任务   java使用数组创建密码和用户名   java获取OnCheckedChangedListener中的视图位置   java如果我搞砸了登录,它将直接进入else条件,如果我正确登录,它将进入这两个条件   Java正则表达式跳过匹配项   oracle如何使用jdbc将变量从plsql发送到java?