cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 4995|回复: 2

[Nspire] TI-BASIC 计算器游戏开发之文字、图形、音频教程 III:按键控制图形移动

[复制链接]
发表于 2012-7-2 15:50:49 | 显示全部楼层 |阅读模式
本帖最后由 FreeBlues 于 2012-7-2 15:57 编辑

TI-BASIC 计算器游戏开发之文字、图形、音频教程 III:按键控制图形移动

【第三部分】
按键控制图形移动

很好,现在又一个问题解决了,接下来讨论一下如何通过按键来控制你的图形的运动方向,就像很多游戏里那样,按左键你的图形朝左走,按右键你的图形朝右走,其实有了上面动态图形的基础,这个功能是很好实现的,我们上面实现的动态图形是当程序一旦开始运行,图形便自动开始按照参数值的设置进行指定方向的移动,现在要做的就是加入按键的动作和获取,你按一个键,程序获取到你所按键的键值,然后开始判断,这个键是多少?比如337表示向左,340表示向右,那么如果是337,就执行向左的移动,如果是340就执行向右的移动,先做左右键的代码如下:

1Loop
2getKey()->kValue
3  while kValue=0
4   getKey()->kValue
5  EndWhile
6XorPic curPic,raw,col
7EndLoop

这里有一个我写好的完整的程序,可以参考一下:
main.gkmov.89p (1 KB, 下载次数: 123)

需要注意的是在这个程序里调用了一个变量名为 p1 的图形变量,这个图像变量是一个20*16 的点阵图形,在运行这个程序前,你可以执行 StoPic 语句,从当前屏幕的任意位置上截取一块 20*16 大小的图形,保存为 p1 ,具体的命令如下:


1StoPic p1,0,0,16,20

这个命令是从左上角坐标为 0,0 的位置开始,高20个像素点,宽16个像素点的矩形框内的屏幕图形保存到图形变量 p1 中。
是不是必须用方向键呢?根据上面的算法原理,只要是TI计算器能够识别出来的键值都可以,比如我们增加4和6作为左右键,首先需要了解4和6键对应的键值是多少,程序可以修改成如下形式:
(这部分还没写,后面补)
很好,我们的图形已经可以通过按键来自由地满屏幕移动了,忽然发现几个新的问题,第一是一旦图形移动到右背景图形的位置,那么背景图形也被擦掉了,第二是因为我们采用的是保存好的图形变量按矩形区域绘制的方式,所以当我们移动到某些有背景图形的位置时,图形变量点阵图中的空白区域会盖住背景图形,结果会显示一个矩形的框,貌似有些不太好看,怎么办呢?如何让图形变量的空白区域不影响背景显示?第一个问题可以在绘制图形时先保存原来的背景变量,有相关的函数来实现,代码如下:
(这部分还没写,后面补)
第二个问题现在想到这么几种办法:
1、使用 PxlOn 函数只绘制有像素点的地方,然后循环改变其坐标,这种方法适用于小图形;
2、使用OrPix函数来操作?待验证
3、保存好背景图形,执行PxlChg等函数?待验证。

话说最近研究TI-BASIC的结果,就是这些了,这篇有些短,后面会补充更新。

【预告】
另外就是那个音频部分我还在看TICALC上的例程,正在研究中,不过貌似那个音频需要用到寄存器以及外设什么的,都比较底层,用C和汇编会比较方便处理一些,或者调用别人写好的函数库,我先看看能不能转成BASIC的形式,反正如果不行了就在BASIC里用EXEC直接嵌套机器码来搞,啥时候研究通了就继续在这里发布结果。

前面的教程应该有不少细节方面的问题、错误,欢迎大家提出,我会及时更新!

评分

参与人数 1金钱 +2 收起 理由
GWHBOB + 2 优秀文章

查看全部评分

发表于 2012-7-11 10:38:10 | 显示全部楼层
学习了,好资料!
发表于 2017-8-15 18:18:29 | 显示全部楼层
本帖最后由 Ioco` 于 2017-8-15 18:32 编辑

ti92plus与ti89的编程有什么区别吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-3-29 18:04 , Processed in 0.053233 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表