制作小型迷你游戏 C# 和自定义框架
Making small minigame C# and custom framework
大家好来自 Whosebug!,
我正在制作一个带有自定义框架的小型迷你游戏,该框架可与 C# 一起使用,并且它以某种方式基于 XNA(如果您可以帮助我,请以 xna 方式编写)。
基本上我有几个圆圈,比方说 6,我需要 "mark" 第一个,然后在单击透明圆圈后我需要创建另一个圆圈,但是单击最后一个标记为它会返回并删除一个(图片更容易理解)。
我会上传一张小图来说明(很难解释,我不是母语为英语的人)。
我相信我必须使用一个数组并根据顺序标记它,但我还是有点迷路:(
对不起,如果问题太多了,我已经试了一整天了!
ps: 是单行!
图片:
http://imgur.com/B2zdf5q
更新:这就是我目前所知道的。现在它正在工作!
private void CircleController()
{
Debug.Log("Marked circles:" + markedCircles);
Debug.Log("Sum Circles: " + sumCircle);
List<CGameObject> mArray = CCircleManager.inst().getGameObjectList();
for (int i = 0; i < mArray.Count; i++)
{
CCircle aCircle = mArray[i] as CCircle;
if (aCircle.getOrder() < sumCircle)
{
aCircle.setMarked(true);
}
else
{
aCircle.setMarked(false);
}
}
for (int i = 0; i < mArray.Count; i++)
{
CCircle aCircle = mArray[i] as CCircle;
CCircle initCircle = mArray[0] as CCircle;
if (aCircle.getOrder() == sumCircle)
{
aCircle.setPostSelected(true);
}
if (aCircle.getOrder() != sumCircle)
{
aCircle.setPostSelected(false);
}
if (aCircle.collides(mPointer) && CMouse.firstPress() && !aCircle.isMarked())
{
markedCircles++;
sumCircle++;
}
if (aCircle.collides(mPointer) && CMouse.firstPress() && aCircle.isMarked())
{
markedCircles--;
sumCircle--;
}
}
}
可能只需要一个整数 circlesMarked
来存储视野中的圆圈数。如果 circlesMarked == 0
然后显示你的第一行(在链接的图像中),如果 circlesMarked == 1
然后显示一个标记的圆圈,右边有一个透明圆圈,依此类推。这可以通过 for
循环来完成。
存储最后一个(最右边)标记的圆圈(如果适用)的位置和透明圆圈的位置,以便您知道在何处处理点击。然后,根据他们点击的位置,从 circlesMarked
中添加或减去 1
。 XNA 的 Render
方法应该相应地更新视图,并且您有一个包含当前标记的圆圈数的变量。
大家好来自 Whosebug!,
我正在制作一个带有自定义框架的小型迷你游戏,该框架可与 C# 一起使用,并且它以某种方式基于 XNA(如果您可以帮助我,请以 xna 方式编写)。
基本上我有几个圆圈,比方说 6,我需要 "mark" 第一个,然后在单击透明圆圈后我需要创建另一个圆圈,但是单击最后一个标记为它会返回并删除一个(图片更容易理解)。
我会上传一张小图来说明(很难解释,我不是母语为英语的人)。
我相信我必须使用一个数组并根据顺序标记它,但我还是有点迷路:(
对不起,如果问题太多了,我已经试了一整天了! ps: 是单行! 图片: http://imgur.com/B2zdf5q
更新:这就是我目前所知道的。现在它正在工作!
private void CircleController()
{
Debug.Log("Marked circles:" + markedCircles);
Debug.Log("Sum Circles: " + sumCircle);
List<CGameObject> mArray = CCircleManager.inst().getGameObjectList();
for (int i = 0; i < mArray.Count; i++)
{
CCircle aCircle = mArray[i] as CCircle;
if (aCircle.getOrder() < sumCircle)
{
aCircle.setMarked(true);
}
else
{
aCircle.setMarked(false);
}
}
for (int i = 0; i < mArray.Count; i++)
{
CCircle aCircle = mArray[i] as CCircle;
CCircle initCircle = mArray[0] as CCircle;
if (aCircle.getOrder() == sumCircle)
{
aCircle.setPostSelected(true);
}
if (aCircle.getOrder() != sumCircle)
{
aCircle.setPostSelected(false);
}
if (aCircle.collides(mPointer) && CMouse.firstPress() && !aCircle.isMarked())
{
markedCircles++;
sumCircle++;
}
if (aCircle.collides(mPointer) && CMouse.firstPress() && aCircle.isMarked())
{
markedCircles--;
sumCircle--;
}
}
}
可能只需要一个整数 circlesMarked
来存储视野中的圆圈数。如果 circlesMarked == 0
然后显示你的第一行(在链接的图像中),如果 circlesMarked == 1
然后显示一个标记的圆圈,右边有一个透明圆圈,依此类推。这可以通过 for
循环来完成。
存储最后一个(最右边)标记的圆圈(如果适用)的位置和透明圆圈的位置,以便您知道在何处处理点击。然后,根据他们点击的位置,从 circlesMarked
中添加或减去 1
。 XNA 的 Render
方法应该相应地更新视图,并且您有一个包含当前标记的圆圈数的变量。