游戏“井字游戏”。创建了 9 个按钮,放置在一个数组中以声明和分发 id。我不知道如何做到这一点,以便在我单击按钮(输入 X)后,另一个随机按钮上会出现一个零。我了解您需要使用 Math.random()。只是如何......一个简单的问题,我很惭愧地问,我问别的话。
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
Button button[]= new Button[9];
Button b1pl,b2pl;
private Integer allid[]={
R.id.button1,
R.id.button2,
R.id.button3,
R.id.button4,
R.id.button5,
R.id.button6,
R.id.button7,
R.id.button8,
R.id.button9};
boolean first= true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b2pl = (Button) findViewById(R.id.b2pl);
b2pl.setOnClickListener(this);
b1pl = (Button) findViewById(R.id.b1pl);
b1pl.setOnClickListener(this);
for (int i=0;i<allid.length;i++){
button[i]=findViewById(allid[i]);
button[i].setOnClickListener(this);
}
}
@SuppressLint("ResourceAsColor")
@Override
public void onClick(View view) {
Button current = new Button(this);
current.setTextSize(24);
switch (view.getId()){
case R.id.b1pl:
if (first){
current.setTypeface(null,Typeface.BOLD);
current.setTextColor(R.color.colorPrimaryDark);
current.setText("X");
}
else {
current.setText("0");
current.setTextColor(R.color.colorPrimaryDark);
}
first=!first;
}
}
}
在这个实现中,我认为您需要将按钮 ID 存储在某个列表中。每次用户点击任何按钮时——你从这个列表中删除它的 id,生成一个从 0 到 N(列表长度)的随机数,寻找这个元素,将零值设置为这个随机单元格,删除这个按钮的 id从一般表。实际上,玩这样的计算机会很无聊)我建议您不要考虑随机性,而要考虑计算机的实现。Cristic-tac-toe 游戏很简单 - 它仅限于 M 个选项。
再次,对初学者的一般建议。阅读有关绑定的信息(无需编写 findViewById)。编写 OOP 代码(不是一种方法)。你的任务是尽可能多地学习和覆盖,而不是写井字游戏——记住这一点!祝你好运。
具体来说,对于您的问题,我可以提出以下建议:
MyButton例如,使用以下函数创建您自己的类:在活动中,您需要添加所有按钮
ArrayList<MyButton> buttons并得到一个像这样的随机空的:
需要的地方: