【发布时间】:2020-02-29 11:46:03
【问题描述】:
我是一名 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();
}
如果这有帮助,那么整个活动代码如下。请,,,
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;
}
}
【问题讨论】:
-
如果您可以更深入地了解您正在做什么以及您的代码出了什么问题,那么任何人都可以更轻松地帮助您。
-
我有 3 个按钮,其中包含三个添加一些随机数的结果,现在我已经设置,以便在我设置的第一个按钮上,它始终具有添加按钮 2 和 3 的真实结果是假的。我想改进我的代码,以便正确的结果出现在按钮 2 或 3 上。这样正确的答案并不总是出现在按钮 1 上,而且每轮都出现在其他按钮上