无法更改使用类函数在main中创建的int值
本文关键字:main 创建 int 类函数 | 更新日期: 2023-09-27 18:20:41
-我无法更改使用类函数在main中创建的int值-
我正在制作一个游戏,我有一个名为sideCollision
的函数,它检查玩家是否正在触摸pictureBox
,如果玩家正在触摸pictureBox,则名为Score
的整数将增加1。
以下是功能:
public void sideCollision(Control player,Control pointRadius,Control topPipe,Control bottomPipe,Control gameOver,int force,bool timer,int score,int pointRadiusCounter)
{
if (player.Right > pointRadius.Left && player.Left < pointRadius.Right - player.Width / 2 && player.Bottom > pointRadius.Top)
{
if (timer == true && pointRadiusCounter == 0)
{
pointRadiusCounter = 1;
score++;
}
}
}
该功能检测到玩家触摸墙壁,但不会将分数增加1。我的主页中还有一条消息,说"分数尚未分配,并且将始终具有默认值0"。
我需要知道如何使用该函数更改分值,因为该函数不会更改Score
的值
在这种情况下不应该使用传递引用。相反,在这种情况下,你可以使用这样的东西。
private void SomeMethod()
{
var score = 0;
var pointRadiusCounter = 0;
if (CollisionOccurred(...))
{
score++;
pointRadiusCounter++;
}
...
...
...
}
public bool CollisionOccurred(Control player,Control pointRadius,Control topPipe,Control bottomPipe,Control gameOver,int force,bool timer)
{
if (player.Right > pointRadius.Left && player.Left < pointRadius.Right - player.Width / 2 && player.Bottom > pointRadius.Top)
{
if (timer == true && pointRadiusCounter == 0)
{
return true;
}
}
return false;
}
请原谅我有点离题,但这可能会帮助您避免目前遇到的问题:
我会考虑将哪些变量作为参数以及哪些变量也可以从您的类,因为无论是否更改,它们的值都将是在代码的任何点都是相同的(例如,玩家的生命点,球员的得分、球员的位置)。
然后您可以将它们转移到自己的类中(对于本例"播放器"类),使这些变量成为该类的属性,以及通过使属性可供其他类访问如果只有1个玩家,则为
public static
或Singleton-class
游戏。将尽可能多的变量传递给
sideCollision(...)
可能会在您的项目中造成很多麻烦变得更大。对变量、方法、,类等可以帮助你防止这种情况。所以慢慢来思考关于什么是重要的,你在哪里需要它等等。
int
是一种值类型。这意味着它是通过值传递的,在函数内部,您有一个原始变量的副本。您可以通过显式引用传递来解决此问题:
public void sideCollision(Control player,Control pointRadius,Control topPipe,Control bottomPipe,Control gameOver,int force,bool timer, ref int score, ref int pointRadiusCounter)
{
if (player.Right > pointRadius.Left && player.Left < pointRadius.Right - player.Width / 2 && player.Bottom > pointRadius.Top)
{
if (timer == true && pointRadiusCounter == 0)
{
pointRadiusCounter = 1;
score++;
}
}
}