Processing 4乘4数独游戏
我的任务是制作一个处理草图,制作4乘4的数独游戏,让玩家在游戏网格中输入缺失的数字,我现在面临的问题是制作一个循环,或者让玩家输入所有缺失的数字? 我已经成功地允许播放器使用switch语句和if语句输入前4个数字,但是程序只遍历每个案例中的第一个if语句,我想让它遍历其余的? 这是我做的鳕鱼Processing 4乘4数独游戏,processing,Processing,我的任务是制作一个处理草图,制作4乘4的数独游戏,让玩家在游戏网格中输入缺失的数字,我现在面临的问题是制作一个循环,或者让玩家输入所有缺失的数字? 我已经成功地允许播放器使用switch语句和if语句输入前4个数字,但是程序只遍历每个案例中的第一个if语句,我想让它遍历其余的? 这是我做的鳕鱼 void setup () { background (255); size (125,125); board(); } void cell (int x , int y , int s )
void setup ()
{
background (255);
size (125,125);
board();
}
void cell (int x , int y , int s )
{
rect (x,y,s,s);
}
void triple (int x , int y , int s )
{
for (int i = 0 ; i < 2 ; i ++)
{
cell ( x,y,s);
x += s;
}
}
void block (int x , int y , int s )
{
for (int i = 0 ; i < 2 ; i ++)
{
triple ( x , y , s);
y += s;
}
}
void row (int x , int y , int s )
{
for ( int i = 0 ; i < 2 ; i ++)
{
block ( x , y , s);
x += (s*2);
}
}
void cellArray ( int x , int y , int s)
{
for (int i = 0 ; i < 2 ; i ++)
{
row ( x , y , s);
y += (s*2);
}
}
void darwLines ( int x , int y , int s)
{
strokeWeight (3);
for (int i = 0 ; i < 1 ; i ++)
{
x += (s*2);
line ( x , 0 , x , (s*4));
}
for ( int j = 0 ; j < 1 ; j ++)
{
y += (s*2);
line ( 0 , y , (s*4) , y );
}
strokeWeight (1);
}
void board ()
{
cellArray (0,0,30);
darwLines (0,0,30);
}
void draw ()
{
int [][] fixedArray = new int [4][4];
fill (0);
textSize(28);
for (int i = 0 ; i < 4 ; i ++)
{
for (int j = 0 ; j < 4 ; j ++)
{
fixedArray [0][2] = 3;
fixedArray [1][1] = 4;
fixedArray [2][2] = 4;
fixedArray [3][3] = 3;
text(fixedArray [0][2], 65,25);
text(fixedArray [1][1],35,58);
text(fixedArray [2][2],65,88);
text(fixedArray [3][3],95,117);
}//end of inner loop.
}//end of outter loop.
if (mousePressed)
{
mouseClicked ();
}
}
/*------------------------------------------------------------------------------------------*/
void mouseClicked ()
{
int s = 30 ;
int cellX = mouseX / s;
int cellY = mouseY / s;
int [][] userInputArray = new int [4][4];
for (int m = 0 ; m < 4 ; m ++)
{
for (int n = 0 ; n < 4 ; n ++)
{
switch (key)
{
case '1':
if (mouseX > userInputArray [0][0] -s && mouseX < userInputArray [0][0]+s && mouseY > userInputArray [0][0] -s && mouseY < userInputArray [0][0] +s )
{
fill (0,0,255);
text (key , 10,25);
}
else if (mouseX > userInputArray [1][2] -30 && mouseX < userInputArray [1][2]+30 && mouseY > userInputArray [1][2] -30 && mouseY < userInputArray [1][2] +30)
{
fill (0,0,255);
text ('1' , 65,58);
}
else if (mouseX > userInputArray [2][3] -30 && mouseX < userInputArray [2][3]+30 && mouseY > userInputArray [2][3] -30 && mouseY < userInputArray [2][3] +30)
{
fill (0,0,255);
text('1' ,95,88);
}
else if (mouseX > userInputArray [3][1] -30 && mouseX < userInputArray [3][1]+30 && mouseY > userInputArray [3][1] -30 && mouseY < userInputArray [3][1] +30)
{
fill (0,0,255);
text('1' ,35,117);
}
break ;
case '2':
if (mouseX > userInputArray [0][1] -(s-s) && mouseX < userInputArray [0][1]+(s*2) && mouseY > userInputArray [0][1] -s && mouseY < userInputArray [0][1] +s )
{
fill (0,0,255);
text(key ,35,25);
}
else if (mouseX > userInputArray [1][3] - (s-s) && mouseX < userInputArray [1][3] +(s*2) && mouseY > userInputArray [1][3] -(s*2) && mouseY < userInputArray [1][3] +(s*2))
{
fill(0,0,255);
text(key,95,58);
}
else if (mouseX > userInputArray [2][0] -(s-s) && mouseX < userInputArray [2][0] +(s*2) && mouseY > userInputArray [2][0] -(s*2) && mouseY < userInputArray [2][0] +(s*2))
{
fill(0,0,255);
text(key,10,88);
}
else if (mouseX > userInputArray [3][2] -(s-s) && mouseX < userInputArray [3][2] +(s*2) && mouseY > userInputArray [3][2] -(s*2) && mouseY < userInputArray [3][2] +(s*2))
{
fill(0,0,255);
text(key,65,117);
}
break;
case '3':
if ( mouseX > userInputArray [1][0] -s && mouseX < userInputArray [1][0]+s && mouseY > userInputArray [1][0] -(s-s) && mouseY < userInputArray [1][0] +(s*2))
{
fill(0,0,255);
text(key,10,58);
}
else if (mouseX > userInputArray [2][1] -s && mouseX < userInputArray [2][1]+s && mouseY > userInputArray [2][1] -(s-s) && mouseY < userInputArray [2][1] +(s*2))
{
fill(0,0,255);
text(key,35,88);
}
break ;
case '4':
if (mouseX > userInputArray [0][3] +60 && mouseX < userInputArray [0][3]+120 && mouseY > userInputArray [0][3] -30 && mouseY < userInputArray [0][3] +30 )
{
fill(0,0,255);
text(key,95,25);
}
else if (mouseX > userInputArray [3][0] +60 && mouseX < userInputArray [3][0]+120 && mouseY > userInputArray [3][0] -30 && mouseY < userInputArray [3][0] +30 )
{
fill(0,0,255);
text(key,10,117);
}
break;
default :
{
fill (255);
rect ((cellX * s),(cellY*s),s,s);
}
}//end of switch.
}//end of the inner loop.
}//end of the outter for loop.
}
void设置()
{
背景(255);
尺寸(125125);
董事会();
}
空单元格(整数x,整数y,整数s)
{
rect(x,y,s,s);
}
空三元组(整数x,整数y,整数s)
{
对于(int i=0;i<2;i++)
{
细胞(x,y,s);
x+=s;
}
}
无效块(整数x,整数y,整数s)
{
对于(int i=0;i<2;i++)
{
三(x,y,s);
y+=s;
}
}
空行(整数x,整数y,整数s)
{
对于(int i=0;i<2;i++)
{
块(x,y,s);
x+=(s*2);
}
}
虚空射线(整数x,整数y,整数s)
{
对于(int i=0;i<2;i++)
{
第(x,y,s)行;
y+=(s*2);
}
}
无效暗线(整数x,整数y,整数s)
{
冲程重量(3);
对于(int i=0;i<1;i++)
{
x+=(s*2);
线(x,0,x,(s*4));
}
对于(int j=0;j<1;j++)
{
y+=(s*2);
线(0,y,(s*4),y);
}
冲程重量(1);
}
空板()
{
雷(0,0,30);
暗线(0,0,30);
}
无效提款()
{
int[][]固定阵列=新int[4][4];
填充(0);
文本大小(28);
对于(int i=0;i<4;i++)
{
对于(int j=0;j<4;j++)
{
固定阵列[0][2]=3;
固定阵列[1][1]=4;
固定阵列[2][2]=4;
固定阵列[3][3]=3;
文本(固定数组[0][2],65,25);
文本(Fixedaray[1][1],35,58);
文本(Fixedaray[2][2],65,88);
文本(Fixedaray[3][3],95117);
}//内环的末端。
}//外环结束。
如果(鼠标按下)
{
鼠标点击();
}
}
/*------------------------------------------------------------------------------------------*/
无效鼠标单击()
{
int s=30;
int cellX=鼠标x/s;
int cellY=鼠标/s;
int[][]userInputArray=新的int[4][4];
对于(int m=0;m<4;m++)
{
对于(int n=0;n<4;n++)
{
开关(钥匙)
{
案例“1”:
if(mouseX>userInputArray[0][0]-s&&mouseXuserInputArray[0][0]-s&&mouseYuserInputArray[1][2]-30&&mouseXuserInputArray[1][2]-30&&mouseYuserInputArray[2][3]-30&&mouseXuserInputArray[2][3]-30&&mouseYuserInputArray[3][1]-30&&mouseXuserInputArray[3][1]-30&&mouseYuserInputArray[0][1]-(s-s)和&mouseXuserInputArray[0][1]-s和&mouseYuserInputArray[1][3]-(s-s)和&mouseXuserInputArray[1][3]-(s*2)和&mouseYuserInputArray[2][0]-(s-s)和&mouseXuserInputArray[2][0]-(s*2)和&mouseYuserInputArray[3][2]-(s-s)和&mouseXuserInputArray[3][2]-(s*2)和&mouseYuserInputArray[1][0]-s&&mouseXuserInputArray[1][0]-(s-s)&&mouseYuserInputArray[2][1]-s&&mouseXuserInputArray[2][1]-(s-s)&&mouseYuserInputArray[0][3]+60&&mouseXuserInputArray[0][3]-30&&mouseYuserInputArray[3][0]+60&&mouseXuserInputArray[3][0]-30&&mouseY
我查看了您的代码,发现了一些问题:
- 首先,代码相当混乱。抽绳+
// GLOBAL VARS DECLARATION int[][] resultsValue = { {1,2,3,4}, {3,4,1,2}, {2,3,4,1}, {4,1,2,3}}; boolean[][] resultsSolved = new boolean[4][4]; int cellsX = 4; int cellsY = 4; float cellSize = 30; float xPos = 0; float yPos = 0; void setup () { background (255); size (130, 130); smooth(); // GLOBAL VARS VALUE ASSIGNMENT resultsSolved[0][2] = true; resultsSolved[1][1] = true; resultsSolved[2][2] = true; resultsSolved[3][3] = true; } void draw () { background(255); drawBoard(cellsX, cellsY, cellSize, xPos, yPos, 2); pushStyle(); fill (0); textSize(28); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { if (resultsSolved[i][j] == true) { text(resultsValue[i][j], 5 + xPos + j * cellSize, -5 + yPos + (i + 1) * cellSize); } } } popStyle(); if (mousePressed) { mouseClicked (); } } /*------------------------------------------------------------------------------------------*/ void drawBoard(int rows, int cols, float cellSize, float xPos, float yPos, int cellBlocks) { pushStyle(); noFill(); stroke(0); strokeWeight(1); // DRAW RECTANGLES for (int i = 0; i < cols; i++) { for (int j = 0; j < rows; j++) { rect(xPos + i * cellSize, yPos + j * cellSize, cellSize, cellSize); } } strokeWeight(3); // DRAW LINES for (int i = 0; i < cols / cellBlocks; i++) { line(xPos + i * cellSize * cellBlocks, yPos, xPos + i * cellSize * cellBlocks, yPos + rows * cellSize); } for (int i = 0; i < rows / cellBlocks; i++) { line(xPos, yPos + i * cellSize * cellBlocks, xPos + cols * cellSize, yPos + i * cellSize * cellBlocks); } popStyle(); } void mouseClicked () { int cellX = (int) ((mouseX - xPos) / cellSize); if (cellX > cellsX - 1) cellX = cellsX - 1; else if (cellX < 0) cellX = 0; int cellY = (int) ((mouseY - yPos) / cellSize); if (cellY > cellsY - 1) cellY = cellsY - 1; else if (cellY < 0) cellY = 0; int lastKeyInt = int(key - '0'); if (resultsValue[cellY][cellX] == lastKeyInt) { resultsSolved[cellY][cellX] = true; } }