我是Android的初级程序员,我创建了自己的游戏,并从随机生成的数字中添加了游戏。玩家的任务是通过选择3个给定的数字相加来猜测结果,其中的数字是真实结果。一切正常,但我希望每轮都在另一个按钮上获得正确的结果,以便玩家不会意识到正确的结果在1号按钮上,而2和3按钮为假。有问题的代码:
private void startTimerThread() {
final Handler handler = new Handler();
los();
proba.setText("dodawanie");
c = Dodawanie(a, b);
Random liczba = new Random();
h = liczba.nextInt(5);
Toast.makeText(getApplicationContext(), String.valueOf(c), Toast.LENGTH_LONG).show();
Runnable runnable = new Runnable() {
public void run() {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.post(new Runnable() {
public void run() {
W1.setText(String.valueOf(c));
Wyb1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
p++;
l.setText(String.valueOf(p));
startTimerThread();
}
});
W2.setText(String.valueOf(l1));
Wyb2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Zle", Toast.LENGTH_LONG).show();
}
});
W3.setText(String.valueOf(l2));
Wyb3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Zle", Toast.LENGTH_LONG).show();
}
});
}
});
}
};
new Thread(runnable).start();
}
enter image description here
如果这有帮助,那么整个活动代码都在下面。请 ,,,
public class GameSingleActivity extends AppCompatActivity {
TextView proba,Dz,W1,W2,W3,l;
private int a,b,c,l1,l2,p=0,h;
ImageButton Wyb1,Wyb2,Wyb3;
ProgressBar mProgressBar;
boolean running = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game_single);
proba = findViewById(R.id.textView12);
Dz = findViewById(R.id.Dzialanie);
W1 = findViewById(R.id.Wpozycja1);
W2 = findViewById(R.id.Wpozycja2);
W3 = findViewById(R.id.Wpozycja3);
l = findViewById(R.id.Level);
Wyb1 = findViewById(R.id.imageButton11);
Wyb2 = findViewById(R.id.imageButton12);
Wyb3 = findViewById(R.id.imageButton13);
mProgressBar=findViewById(R.id.progressBar);
l.setText("0");
if (getIntent().getExtras()!=null) {
int buttonPressed = getIntent().getExtras().getInt(MenuGameActivity.INTENT_KEY);
if (buttonPressed == MenuGameActivity.FIRST_OPTION) {
// first button is clicked
proba.setText("dodawanie");
startTimerThread();
} else if (buttonPressed == MenuGameActivity.SECOND_OPTION) {
//second button is clicked
proba.setText("odejmowanie");
} else if (buttonPressed == MenuGameActivity.THIRD_OPTION) {
//second button is clicked
proba.setText("odejmowanie");
}else if (buttonPressed == MenuGameActivity.FOURTH_OPTION) {
//second button is clicked
proba.setText("odejmowanie");
}else if (buttonPressed == MenuGameActivity.FIFTH_OPTION) {
//second button is clicked
proba.setText("odejmowanie");
}else if (buttonPressed == MenuGameActivity.SIXTH_OPTION) {
//second button is clicked
proba.setText("odejmowanie");
}
}
}
///////////////////////////////////////////
private void startTimerThread() {
final Handler handler = new Handler();
los();
proba.setText("dodawanie");
c = Dodawanie(a, b);
Random liczba = new Random();
h = liczba.nextInt(5);
Toast.makeText(getApplicationContext(), String.valueOf(c), Toast.LENGTH_LONG).show();
Runnable runnable = new Runnable() {
public void run() {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.post(new Runnable() {
public void run() {
W1.setText(String.valueOf(c));
Wyb1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
p++;
l.setText(String.valueOf(p));
startTimerThread();
}
});
W2.setText(String.valueOf(l1));
Wyb2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Zle", Toast.LENGTH_LONG).show();
}
});
W3.setText(String.valueOf(l2));
Wyb3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Zle", Toast.LENGTH_LONG).show();
}
});
}
});
}
};
new Thread(runnable).start();
}
public int Dodawanie(int a,int b)
{
String A = String.valueOf(a);
String B = String.valueOf(b);
Dz.setText(A+" + "+B);
return a + b;
}
public void los()
{
Random liczba = new Random();
a = liczba.nextInt(101);
b = liczba.nextInt(101);
l1= liczba.nextInt(101)+30;
l2= liczba.nextInt(101)+30;
}
}
最佳答案
我认为最简单,最快捷的方法是,每当您提出一个新问题时,都要对W1 / Wyb1成员进行洗牌。
当前,您在OnCreate
开头设置一次。只需编写另一个函数,该函数将以Random
的方式在run()
的第一行之前重新分配这些字段,或者更准确地说-在W1.setText(String.valueOf(c));
之前
下面是一个伪代码(我将其写在编辑框中),该伪代码应证明(或不证明)这种方法是否适合您的需要。
void Shuffle() {
switch(new Random().nextInt(3)) {
case 0:
W1 = findViewById(R.id.Wpozycja1);
W2 = findViewById(R.id.Wpozycja2);
W3 = findViewById(R.id.Wpozycja3);
Wyb1 = findViewById(R.id.imageButton11);
Wyb2 = findViewById(R.id.imageButton12);
Wyb3 = findViewById(R.id.imageButton13);
break;
case 1:
W2 = findViewById(R.id.Wpozycja1);
W1 = findViewById(R.id.Wpozycja2);
W3 = findViewById(R.id.Wpozycja3);
Wyb2 = findViewById(R.id.imageButton11);
Wyb1 = findViewById(R.id.imageButton12);
Wyb3 = findViewById(R.id.imageButton13);
break;
case 2:
W3 = findViewById(R.id.Wpozycja1);
W2 = findViewById(R.id.Wpozycja2);
W1 = findViewById(R.id.Wpozycja3);
Wyb3 = findViewById(R.id.imageButton11);
Wyb2 = findViewById(R.id.imageButton12);
Wyb1 = findViewById(R.id.imageButton13);
break;
}
}