我正在尝试制作一个Snake Vs块游戏,但是对于这部分代码,我只想从我的'count'变量中将值放在我的网格中。每次调用它时,我都不希望此变量设置为0。因此,我需要找到一种方法,以便每次调用时我的计数器都不会重置。
我正在尝试将增量循环函数放在main中,在它的增量循环中也是如此。
问题是,函数的值总是返回0,因为每次调用函数时它都会重置为零。 (因为循环)
每次调用它时如何阻止它重置为0?将它放在一个全局变量中是有效的,但我不能为我的任务做到这一点。
以下是我正在谈论的代码的两部分:
public static int choix_case (int nbColonnes) {
int max = maximum(nbColonnes);
int random_value = RandomValue();
int count = 0;
do {
if ( random_value == 1) {
count++;
}
if (random_value == 2) {
count++;
}
if (random_value == 3) {
count++;
}
} while(count <= max);
return count;
}
然后:
public static void obtenirNouvelleGrille(int[][] grille, int nbLignes, int nbColonnes)
{
for(int i = 0; i < nbLignes; i++) {
// mettre le compteur de balles et de centres à 0
for(int j = 0; j < nbColonnes; j++){
int choix = choix_case(nbColonnes);
grille[i][j] = choix; // vide
}
}
}
答案 0 :(得分:0)
因此,听起来就像您希望在每次调用count
时保存本地choix_case()
字段一样。即,它应该在第一次调用时为零,然后每个后续调用应该&#34;记住&#34;以前的计数。
最简单的方法是让调用代码跟踪它,并将其传递给choix_case()
。
e.g:
int cumlativeCount = 0;
for(int i = 0; i < nbLignes; i++) {
// mettre le compteur de balles et de centres à 0
for(int j = 0; j < nbColonnes; j++){
final int choix = choix_case(nbColonnes, cumlativeCount);
grille[i][j] = choix; // vide
cumulativeCount = choix;
}
}
这假设可以更改choix_case()
以接受另一个参数。
但请注意这实际上并不是很棒的代码!您从choix_case()
获得的价值有点无意义,因为您知道它是来自maximum(nbColonnes)
+1的值。目前还不清楚choix_case()
实际上做了什么,因为除了计数之外,它的所有字段都没有被使用过,而且这个计数很容易被调用者弄清楚。
也就是说,如果choix_case()
表现完全相同,则表示完全相同:
do {
if (random_value > 0) {
count++;
}
} while(count <= max);
return count;