xxxxxxxxxx
int w=7, h=6, bs=100, player=1, win;
int [] [] board = new int [w] [h];
color winMark;
color p1Color = #581845;
color p2Color = #727E1E;
color bgColor = #DAF7A6;
color boardColor = #FFC300;
void setup() {
size(700, 660);
ellipseMode(CORNER);
textAlign(CENTER);
textSize(60);
smooth();
strokeWeight(2);
stroke(255);
}
void draw() {
background(bgColor);
randomColor();
Arrow();
noFill();
rect(0,0,width,height);
for (int i=0; i<w; i++)for (int j=0; j<h; j++) {
fill(boardColor);
ellipse(i*bs, j*bs+65, bs-5, bs-5);
if (board[i][j]>0) {
if ( board[i][j] ==1) {
fill(p1Color);
} else if (board[i][j]==2 ) {
fill(p2Color);
} else if (board[i][j]==3) {
fill(winMark);
} else fill(0);
ellipse(i*bs, j*bs+65, bs-5, bs-5);
}
}
if (win==1) {
fill(200, 10, 10);
if (player==0)text("player red WIN!", width/2, height/2);
else text("player green WIN!", width/2, height/2);
text("ENTER to restart", width/2, height/2-100);
}
}
int nextS(int x) {
for (int y=h-1; y>=0; y--) {
if (board[x][y]==0)return y;
}
return -1;
}
void mousePressed() {
if (win==0) {
int x = int(mouseX / bs);
int y= nextS(x);
if (y>=0) {
board[x][y] = player;
if (player == 1) {
player=2;
} else player =1;
}
checkWin();
}
}
void keyPressed() {
if ( keyCode ==ENTER && win ==1) {
player=1;
for (int i=0; i< w; i++) for ( int j =0; j<h; j++) {
board[i][j]=0;
win=0;
}
}
}
void checkWin() {
// check Y
for ( int i=0; i<w; i++) {
for (int j=0; j<h-3; j++) {
if (board[i][j]==1 && board[i][j+1]==1&&board[i][j+2]==1 &&board[i][ j+3 ]==1 ||
board[i][j]==2 && board[i][j+1]==2&&board[i][j+2]==2 &&board[i][ j+3 ]==2) {
board[i][j]=3 ;
board[i][j+1]=3;
board[i][j+2]=3;
board[i][j+3]=3;
win=1;
}
}
}
//check X
for ( int i=0; i<w-3; i++) {
for (int j=0; j<h; j++) {
if (board[i][j]==1 && board[i+1][j]==1&&board[i+2][j]==1 &&board[i+3][ j ]==1 ||
board[i][j]==2 && board[i+1][j]==2&&board[i+2][j]==2 &&board[i+3][j]==2) {
board[i][j]=3 ;
board[i+1][j]=3;
board[i+2][j]=3;
board[i+3][j]=3;
win=1;
}
}
}
for ( int i=0; i<w-3; i++) {
for (int j=0; j<3; j++) {
// println(i, j);
if (board[i][j]==1 && board[i+1][j+1]==1&&board[i+2][j+2]==1 &&board[i+3][ j+3 ]==1 ||
board[i][j]==2 && board[i+1][j+1]==2&&board[i+2][j+2]==2 &&board[i+3][j+3]==2) {
board[i][j]=3 ;
board[i+1][j+1]=3;
board[i+2][j+2]=3;
board[i+3][j+3]=3;
win=1;
}
}
}
for ( int i=3; i<w; i++) {
for (int j=0; j<3; j++) {
if (board[i][j]==1 && board[i-1][j+1]==1&&board[i-2][j+2]==1 &&board[i-3][ j+3 ]==1 ||
board[i][j]==2 && board[i-1][j+1]==2&&board[i-2][j+2]==2 &&board[i-3][j+3]==2) {
board[i][j]=3 ;
board[i-1][j+1]=3;
board[i-2][j+2]=3;
board[i-3][j+3]=3;
// println(i, j);
win=1;
}
}
}
}
void randomColor() {
if (frameCount %10 ==1) {
winMark = color(random(255), random(255), random(255));
}
}
void Arrow() {
if ( player ==1) {
fill(p1Color);
} else if (player == 2) {
fill(p2Color);
}
int mapX= int(mouseX /bs);
int mapF = int(mapX*bs+10);
triangle(mapF, 5, mapF+80, 5, mapF+40, 50);
}