📄 frame1.java
字号:
maxNumber=1;
}
state=board[i][j];
}
}
//初始下一列扫描
if(maxNumber<5){
state=0;
maxNumber=0;
}
}
//检查横线
for(int i=0;i<size;i++){
for(int j=0;j<size;j++){
if(maxNumber>4){ //到达5子共线
winner=state;
//设置直线提示
if(j==0){
canvas.setLine(size-5,i-1,size-1,i-1);
}
else{
canvas.setLine(j-5,i,j-1,i);
}
return true;
}
if(board[j][i]==state&&state!=0){
maxNumber++;
}
if(board[j][i]!=state){
if(board[j][i]==0){
maxNumber=0;
}
else{
maxNumber=1;
}
state=board[j][i];
}
}
//初始下一行扫描
if(maxNumber<5){
state=0;
maxNumber=0;
}
}
//检查左斜线
for(int i=0;i<size;i++){ //检查上半部分
for(int j=0;j<size-i;j++){
if(maxNumber > 4){ //到达5子共线
winner=state;
//设置直线提示
if(j==0){
canvas.setLine((i-1)+size-(i-1)-5,size-(i-1)-5,(i-1)+size-(i-1)-1,size-(i-1)-1);
}
else{
canvas.setLine(i+j-5,j-5,i+j-1,j-1);
}
return true;
}
if(board[i+j][j]==state&&state!=0){
maxNumber++;
}
if(board[i+j][j]!=state){
if(board[i+j][j]==0){
maxNumber=0;
}
else{
maxNumber=1;
}
state=board[i+j][j];
}
}
//初始下一斜线扫描
if(maxNumber<5){
state=0;
maxNumber=0;
}
}
for(int i=1;i<size;i++){ //检查下半部分
for(int j=0;j<size-i;j++){
if(maxNumber>4){ //到达5子共线
winner=state;
//设置直线提示
if(j==0){
canvas.setLine(size-(i-1)-5,(i-1)+size-(i-1)-5,size-(i-1)-1,(i-1)+size-(i-1)-1);
}
else{
canvas.setLine(j-5,i+j-5,j-1,i+j-1);
}
return true;
}
if(board[j][i+j]==state&&state!=0){
maxNumber++;
}
if(board[j][i+j]!=state){
if(board[j][i+j]==0){
maxNumber=0;
}
else{
maxNumber=1;
}
state=board[j][i+j];
}
}
//初始下一斜线扫描
if(maxNumber<5){
state=0;
maxNumber=0;
}
}
//检查右斜线
for(int i=0;i<size;i++){ //检查下半部分
for(int j=0;j<size-i;j++) {
if(maxNumber>4) { //到达5子共线
winner=state;
//设置直线提示
if(j==0){
canvas.setLine((i-1)+size-(i-1)-5,size+4-(size-(i-1)),(i-1)+size-(i-1)-1,size-(size-(i-1)));
}
else{
canvas.setLine(i+j-5,size+4-j,i+j-1,size-j);
}
return true;
}
if(board[i+j][size-1-j]==state&&state!=0){
maxNumber++;
}
if(board[i+j][size-1-j]!=state){
if(board[i+j][size-1-j]==0){
maxNumber=0;
}
else{
maxNumber=1;
}
state=board[i+j][size-1-j];
}
}
//初始下一斜线扫描
if(maxNumber<5){
state=0;
maxNumber=0;
}
}
for(int i=1;i<size;i++){ //检查上半部分
for(int j=0;j<size-i;j++){
if(maxNumber>4) { //到达5子共线
winner=state;
//设置直线提示
if(j==0){
canvas.setLine(size-(i-1)-5,size+4-(i-1)-(size-(i-1)),size-(i-1)-1,size-(i-1)-(size-(i-1)));
}
else{
canvas.setLine(j-5,size+4-i-j,j-1,size-i-j);
}
return true;
}
if(board[j][size-1-i-j]==state&&state!=0){
maxNumber++;
}
if(board[j][size-1-i-j]!=state){
if(board[j][size-1-i-j]==0){
maxNumber=0;
}
else{
maxNumber=1;
}
state=board[j][size-1-i-j];
}
}
//初始下一斜线扫描
if(maxNumber<5){
state=0;
maxNumber=0;
}
}
return false;
}
/**
* <p>Description: 更新预测表</p>
* @param n 棋子控制者(1:用户 2:AI)
*/
public void refreshTable(int n){
int[] result;
int[][] preBoard=new int[size][size];
for(int i=0;i<size;i++){
for(int j=0;j<size;j++){
preBoard[i][j]=board[i][j];
}
}
for(int i=0;i<size;i++){
for(int j=0;j<size;j++){
if(board[i][j]==0){
result=preCheck(preBoard, i, j, n);
if(n==1){
user.preBoard1[i][j]=result[0];
user.preBoard2[i][j]=result[1];
user.preBoard3[i][j]=result[2];
user.preBoard4[i][j]=result[3];
user.preBoard5[i][j]=result[4];
user.preBoard6[i][j]=result[5];
user.preBoard7[i][j]=result[6];
show.userPreBoard1[i][j]=result[0];
show.userPreBoard2[i][j]=result[1];
show.userPreBoard3[i][j]=result[2];
show.userPreBoard4[i][j]=result[3];
show.userPreBoard5[i][j]=result[4];
show.userPreBoard6[i][j]=result[5];
show.userPreBoard7[i][j]=result[6];
if(result[0]>0){
userFourLine++;
}
if(result[1]+result[2]>0){
userThreeLine++;
}
if(result[0]+result[1]+result[2]>1){
userMultiLine++;
}
}
else{
ai.preBoard1[i][j]=result[0];
ai.preBoard2[i][j]=result[1];
ai.preBoard3[i][j]=result[2];
ai.preBoard4[i][j]=result[3];
ai.preBoard5[i][j]=result[4];
ai.preBoard6[i][j]=result[5];
ai.preBoard7[i][j]=result[6];
show.aiPreBoard1[i][j]=result[0];
show.aiPreBoard2[i][j]=result[1];
show.aiPreBoard3[i][j]=result[2];
show.aiPreBoard4[i][j]=result[3];
show.aiPreBoard5[i][j]=result[4];
show.aiPreBoard6[i][j]=result[5];
show.aiPreBoard7[i][j]=result[6];
if(result[0]>0){
aiFourLine++;
}
if(result[1]+result[2]>0){
aiThreeLine++;
}
if(result[0]+result[1]+result[2]>1){
aiMultiLine++;
}
}
}
}
}
//更新最大值数据
user.refreshMax(1);
user.refreshMax(2);
user.refreshMax(3);
user.refreshMax(4);
user.refreshMax(5);
user.refreshMax(6);
user.refreshMax(7);
ai.refreshMax(1);
ai.refreshMax(2);
ai.refreshMax(3);
ai.refreshMax(4);
ai.refreshMax(5);
ai.refreshMax(6);
ai.refreshMax(7);
}
/**
* <p>Description: 清空棋子权值</p>
* @param i 棋子横坐标
* @param j 棋子纵坐标
*/
public void clearTable(int i, int j){
//清空该点预测数据
user.preBoard1[i][j]=0;
user.preBoard2[i][j]=0;
user.preBoard3[i][j]=0;
user.preBoard4[i][j]=0;
user.preBoard5[i][j]=0;
user.preBoard6[i][j]=0;
user.preBoard7[i][j]=0;
ai.preBoard1[i][j]=0;
ai.preBoard2[i][j]=0;
ai.preBoard3[i][j]=0;
ai.preBoard4[i][j]=0;
ai.preBoard5[i][j]=0;
ai.preBoard6[i][j]=0;
ai.preBoard7[i][j]=0;
show.userPreBoard1[i][j]=0;
show.userPreBoard2[i][j]=0;
show.userPreBoard3[i][j]=0;
show.userPreBoard4[i][j]=0;
show.userPreBoard5[i][j]=0;
show.userPreBoard6[i][j]=0;
show.userPreBoard7[i][j]=0;
show.aiPreBoard1[i][j]=0;
show.aiPreBoard2[i][j]=0;
show.aiPreBoard3[i][j]=0;
show.aiPreBoard4[i][j]=0;
show.aiPreBoard5[i][j]=0;
show.aiPreBoard6[i][j]=0;
show.aiPreBoard7[i][j]=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -