?? 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){ //到達(dá)5子共線
winner=state;
//設(shè)置直線提示
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){ //到達(dá)5子共線
winner=state;
//設(shè)置直線提示
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){ //到達(dá)5子共線
winner=state;
//設(shè)置直線提示
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) { //到達(dá)5子共線
winner=state;
//設(shè)置直線提示
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) { //到達(dá)5子共線
winner=state;
//設(shè)置直線提示
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: 更新預(yù)測表</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++;
}
}
}
}
}
//更新最大值數(shù)據(jù)
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: 清空棋子權(quán)值</p>
* @param i 棋子橫坐標(biāo)
* @param j 棋子縱坐標(biāo)
*/
public void clearTable(int i, int j){
//清空該點(diǎn)預(yù)測數(shù)據(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;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -