gpt4 book ai didi

output - Ti 基本检查角色是否在屏幕位置

转载 作者:行者123 更新时间:2023-12-02 06:44:01 24 4
gpt4 key购买 nike

我正在尝试在 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”)是否位于屏幕上的某个位置,以便检查它是否在上次迭代中被子弹清除?或者,还有更好的方法?感谢您的帮助!

最佳答案

您的代码似乎没有测试子弹是否与岩石位于同一位置。要发生这种碰撞,您需要将岩石的“R”y 值与您显示的子弹的 y 值进行比较,并将岩石的 x 值(无论您如何存储)与 x 值进行比较-子弹的值(value)。如果两者相等,则它们发生了碰撞,您可以通过将岩石设置为任何表示它不再存在的值来“删除”岩石。假设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(意味着它不存在)。如果您愿意,您还可以添加爆炸的文本版本,以赋予其更多风格。祝您的项目顺利,希望这对您有所帮助!

关于output - Ti 基本检查角色是否在屏幕位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35516780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com