前提・実現したいこと
迷路
実は教科書でProcessingの勉強をしているのですが、今rを一度押すとマスが2マスずつ増えていくという機能をつけようとしているのですが、なぜか1度押すと同時に何回か増えてしまいます。教科書では1度押すごとに1回ずつです。(すいません、説明苦手で)
発生している問題・エラーメッセージ
なし ### 該当のソースコード ```ここに言語名を入力 Processing ソースコード int boardX; int boardY; int roadW; int [][]roadMap; int pieceX; int pieceY; boolean isPlaying; boolean isGoal; float pieceSize; int playTime; int [] dirX={1,0,-1,0}; int [] dirY={0,1,0,-1}; void setup(){ size(800,600); makeBoard(13,9,46); initMaze(); } void draw(){ drawMaze(); drawPiece(); if(isPlaying||isGoal){ drawInfo(); } checkFinish(); } void makeBoard(int x,int y,int w){ boardX=x+4; boardY=y+4; roadW=w; roadMap=new int[boardX][boardY]; } void initMaze(){ for(int x=0;x<=boardX-1;x++){ for(int y=0;y<=boardY-1;y++){ roadMap[x][y]=1; } } for(int x=3;x<=boardX-4;x++){ for(int y=3;y<=boardY-4;y++){ roadMap[x][y]=0; } } roadMap[2][3]=2; roadMap[boardX-3][boardY-4]=3; pieceX=2; pieceY=3; isPlaying=false; isGoal=false; pieceSize=0.7*roadW; playTime=0; } void drawMaze(){ noStroke(); background(100); for(int x=2;x<=boardX-3;x++){ for(int y=2;y<=boardY-3;y++){ if(roadMap[x][y]==0){ fill(100,0,0); }else if(roadMap[x][y]==1){ fill(0,200,0); }else if(roadMap[x][y]==2){ fill(200,200,0); }else if(roadMap[x][y]==3){ fill(200,0,200); } rect(roadW*x,roadW*y,roadW,roadW); } } } void keyPressed(){ switch(key){ case 'a': generateMazeUpDown(); break; case 'r': generateMazeRandom(); break; case 'k': isPlaying=true; break; case 'i': initMaze(); break; } if(isPlaying){ if(keyCode==UP&&pieceY>0)pieceY-=1; if(keyCode==RIGHT&&pieceX<boardX-1)pieceX+=1; if(keyCode==DOWN&&pieceY<boardY-1)pieceY+=1; if(keyCode==LEFT&&pieceX>0)pieceX-=1; } } void generateMazeUpDown(){ for(int x=4;x<boardX-3;x+=4){ for(int y=3;y<boardY-4;y++){ roadMap[x][y]=1; } } for(int x=6;x<boardX-3;x+=4){ for(int y=boardY-4;y>3;y--){ roadMap[x][y]=1; } } } void drawPiece(){ fill(0,200,0); ellipse((pieceX+0.5)*roadW,(pieceY+0.5)*roadW,pieceSize,pieceSize); } void drawInfo(){ if(isPlaying==true){ playTime+=1; } textSize(30); fill(255,255,0); text("Time="+playTime,20,30); } void checkFinish(){ if(roadMap[pieceX][pieceY]==3){ isPlaying=false; isGoal=true; } } void generateMazeRandom(){ for(int x=2;x<=boardX-3;x+=2){ for(int y=2;y<=boardY-3;y+=2){ if(roadMap[x][y]==1){ int r=(int)random(0,4); int dx=(int)dirX[r]; int dy=(int)dirY[r]; if(roadMap[x+dx*2][y+dy*2]==0){ roadMap[x+dx][y+dy]=1; roadMap[x+dx*2][y+dy*2]=1; } } } } }``` ### 試したこと void generateMazeRandom(){のじゅんばんをかえるなど ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。