第33篇 Android Studio实现五子棋游戏(四)棋子类和主类
1.棋子类
棋子类主要用于表示棋子,便于我们获取棋子的位置和棋子的颜色等信息。 代码如下:
package com.example.myapplication;
public class ChessActivity {
private int x;
private int y;
private int color;
ChessActivity() {
this.x = 0;
this.y = 0;
this.color = 0;
}
ChessActivity(ChessActivity chessActivity) {
this.x = chessActivity.x;
this.y = chessActivity.y;
this.color = chessActivity.color;
}
public void setInfo(int x, int y, int color){
this.x = x;
this.y = y;
this.color = color;
}
public String getInfo(){
return String.valueOf(x) + " " + String.valueOf(y) + " " + String.valueOf(color);
}
public int getX() {
return this.x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return this.y;
}
public void setY(int y) {
this.y = y;
}
public int getColor() {
return this.color;
}
public void setColor(int color) {
this.color = color;
}
}
2.主类
用于实现按钮功能等。
2.1.变量
就只有一个棋盘对象:ChessBoardActivity chess_board; Android便捷的地方在于,只要通过获取id去实现某些功能就行了,没有必要为这个类添加那么多变量。
2.2.重写方法
这几个就是回调的函数。
@Override
public void callBackInfo(String info) {
Toast.makeText(MainActivity.this,info,Toast.LENGTH_SHORT).show();
}
@Override
public void chessBoardChange(int current_x, int current_y) {
Toast.makeText(MainActivity.this,"落子",Toast.LENGTH_SHORT).show();
}
@Override
public String getMode(){
Spinner spi_mode = findViewById(R.id.spinner_mode);
return spi_mode.getSelectedItem().toString();
}
2.3.代码
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements GameCallBack {
ChessBoardActivity chess_board;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chess_board = findViewById(R.id.view_five_chess_board);
chess_board.setCallBack(this);
init();
}
public void init() {
Button btn_begin = findViewById(R.id.btn_begin);
Button btn_prompt = findViewById(R.id.btn_prompt);
Button btn_repent = findViewById(R.id.btn_repent);
Button btn_help = findViewById(R.id.btn_help);
btn_begin.setOnClickListener(view -> {
chess_board.init();
chess_board.postInvalidate();
});
btn_prompt.setOnClickListener(view-> new AlertDialog.Builder(MainActivity.this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("提示")
.setMessage("看看有没有三子或四子相连的地方喔!")
.setPositiveButton("确定", (dialogInterface, i) -> {
}).show());
btn_repent.setOnClickListener(view -> chess_board.subChess());
btn_help.setOnClickListener(view -> new AlertDialog.Builder(MainActivity.this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("帮助")
.setMessage("点击开始可以刷新棋盘重新开始。")
.setPositiveButton("确定", (dialogInterface, i) -> {
}).show());
}
@Override
public void callBackInfo(String info) {
Toast.makeText(MainActivity.this,info,Toast.LENGTH_SHORT).show();
}
@Override
public void chessBoardChange(int current_x, int current_y) {
Toast.makeText(MainActivity.this,"落子",Toast.LENGTH_SHORT).show();
}
@Override
public String getMode(){
Spinner spi_mode = findViewById(R.id.spinner_mode);
return spi_mode.getSelectedItem().toString();
}
}
还有一个值得注意的是,提示对话框,第一次用,还不知道怎么用,先列举出来看看。
btn_help.setOnClickListener(view -> new AlertDialog.Builder(MainActivity.this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("帮助")
.setMessage("点击开始可以刷新棋盘重新开始。")
.setPositiveButton("确定", (dialogInterface, i) -> {
}).show());
view->xxx,相当于指向执行函数,或者执行的具体的某一个东西,你可以直接写一个函数,然后指向就行,有QT那种信号与槽关联的意思。
3.效果
3.1.进去界面
3.2.赢棋
3.3.提示
3.4.帮助
ok,只能做到这了。
|