Tibasic检查角色是否在屏幕位置

问题描述 投票:2回答:2

我想在TIBasic制作一个简单的街机射击游戏,如Galaga。我已成功创建了一些代码,可让您在屏幕上水平移动角色(“X”),同时拍摄子弹,沿着垂直路径清除所有内容。但是,我遇到的问题是“岩石”应该从屏幕上掉下来并在击中时消失。当我射击岩石时,它被子弹清除,但随后继续沿着屏幕下降,直到它击中屏幕底部。这是岩石的代码:

//outside the game loop:
1->R

//inside game loop:
If not(R=8)
Then
R+1->R
If R>1
Then
Output(E-1, 1, " "  //removes last rock
End
Output(R, 1, "R"  //replaces last rock with one below it (traveling towards the ground)
End

这个代码显然不会阻止“R”在清除时继续沿着屏幕移动(顺便说一句,我只是在子弹的任何地方使用Output(...," ")来清除子弹击中的任何东西)。那么,如何在游戏循环的最后一次迭代中检查岩石是否被清除?有没有办法检查某些东西(“R”)是否在屏幕上的某个位置,以检查它是否在最后一次迭代中被子弹清除?或者,还有更好的方法?谢谢您的帮助!

output ti-basic
2个回答
3
投票

看来你所拥有的代码并没有测试子弹是否和岩石在同一个地方。要进行此碰撞,您需要将岩石的“R”y值与您显示的子弹的y值进行比较,并将岩石的x值(无论您存储的是什么)与x进行比较 - 子弹的价值。如果两者相等,那么它们就会发生碰撞,您可以通过将其设置为任何值来“删除”岩石,表示它不再存在。假设R是岩石的y值,S是岩石的x值,Y是子弹的y值,X是子弹的x值,在移动岩石的代码中,我把它放在某个地方:

:If R=Y and S=X
:DelVar R
//You could also delete the bullet here because it's "stopped" by the rock

此代码将测试两者是否发生冲突并将R设置为0(意味着它不存在)。如果你愿意,你也可以添加爆炸的文本版本,以赋予它更多的天赋。祝你的项目好运,我希望这有帮助!


2
投票

在Ti-Basic中制作游戏时,有两个选项可供“屏幕”显示:计算器的文本屏幕,使用Disp和Output等功能,图形屏幕,使用Text,以及绘图函数,存储的图片以及pxl和pt函数。我不确定如何在屏幕上检查文本输出屏幕是否存在对象,但图形功能具有Pxl-Test功能:

:Pxl-Test(y,x)

其他人可能知道如何在文本屏幕上检查某些内容,但我建议切换到图形屏幕以使用此功能。

如果您要切换到使用图形输出,请注意以下事项:

  • 文字功能是 :Text(row,col,output)
  • 行和列从输出功能切换
  • 行和列在屏幕上以像素为单位进行测量,而不是键入字母所需的空间
  • 大多数字母宽3像素,空格宽1像素,因此需要多个空格来清除不需要的字符
  • 你可能需要在程序的乞讨中禁用图形轴(格式菜单),y功能(VARS菜单,然后右边的Y-VARS)和状态图(STAT PLOT菜单),然后在结束。

最后一个没有使用Pxl-Test功能的是它测试一组像素,而一个字母。现在让我们假装你只在你的程序中使用Rs和一个X(我不知道你是否做过),所以你应该在该角色上测试一个对该角色来说相对独特的点。

祝好运!

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