Processing 4乘4数独游戏

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 )

我的任务是制作一个处理草图,制作4乘4的数独游戏,让玩家在游戏网格中输入缺失的数字,我现在面临的问题是制作一个循环,或者让玩家输入所有缺失的数字? 我已经成功地允许播放器使用switch语句和if语句输入前4个数字,但是程序只遍历每个案例中的第一个if语句,我想让它遍历其余的? 这是我做的鳕鱼

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;
      }
    }