質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

848閲覧

降ってきているブロックを特定の条件下で消したい

rink

総合スコア80

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/01/26 04:52

ぷよぷよのコードを改造しています。
配列の一番下に行くと、降ってくるブロックが消えるというものに挑戦しています。
以下にコードを貼ります。

java

1import java.awt.*; 2import java.awt.event.*; 3import javax.swing.ImageIcon; 4import javax.swing.*; 5import javax.swing.JButton; 6import javax.swing.JLabel; 7import javax.swing.JFrame; 8 9class YPanel extends Panel { 10 //Panel innerPanel3; 11 //Panel innerPanel4; 12 Color bgcolor; 13 static int puyomatrix[][]; 14 // static Panel mypanels[][]; 15 //int i,Y; 16 public YPanel() { 17 18 bgcolor = super.getBackground();//親クラスのBackgroundを参照しているらしい 19 } 20 public void setBounds(int x, int y, int width, int height) { 21 super.setBounds(x,y,width,height); 22 // innerPanel3.setBounds(4,height-4,width-8,8); 23 // innerPanel4.setBounds(width-8,4,8,height-8); 24 } 25 public Color getBackground() { 26 return bgcolor; 27 } 28 public void setBackground(Color color) { 29 bgcolor = color; 30 super.setBackground(color);//一連の動き確認 31 } 32} 33 34public class shooting2 { 35 static JLabel mylabel; 36 static Panel mypanels[][]; 37 static int puyomatrix[][]; 38 static Color colorList[]; 39 static int score = 0; 40 static int puyoX = 3, puyoY = 1;//上の方のブロックのx座標とY座標 41 //static int puyoX2 = 3, puyoY2 = 2; 42 //static int puyoX = 9, puyoY = 2; 43 //static int puyoX2 = 9, puyoY2 = 3; 44 static int color3 = (int)(Math.random()*3)+2; 45 static int color4 = (int)(Math.random()*3)+2; 46 static int color1 = 0, color2 = 0; 47 //static int rotate = 0; 48 static boolean lock = false; 49 static boolean lock2 = false; 50 51 static JButton[][] Btn;//ボタン 52 53 54 /* static int puyoX3=9; 55 static int puyoY3=2; 56 static int puyoX4=9; 57 static int puyoY4=3;*/ 58 59 public static void main(String args[]) { 60 int i,x,y,j,q=0; 61 final int puyoSize = 32; 62 63 64 JFrame myframe = new JFrame("ウンチ撃退ゲーム"); 65 myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 66 myframe.setSize(470, 580); 67 myframe.setLocationRelativeTo(null); 68 JLabel background = new JLabel(new ImageIcon("./png/6.png")); 69 myframe.add(background); 70 myframe.setVisible(true); 71 72 73 74 ImageIcon labelicon = new ImageIcon("./png/4.png");//背景? 75 mylabel = new JLabel(labelicon); 76 mylabel.setLayout(null); // does not use layout manager 77 mylabel.setSize(400,600); // window size : width = 400, height = 600 78 mylabel.setVisible(true); // make the window visible 79 //mylabel.addWindowListener(new MyWindowAdapter()); 80 81 82 ImageIcon buttonicon = new ImageIcon("./png/1.png");//配列上に出る、透明のやつ 83 Btn = new JButton[13][6];//真ん中 84 for( j = 0; j < 13; j ++) { 85 for( q = 0; q < 6; q ++) { 86 Btn[j][q] = new JButton(buttonicon); 87 myframe.add(Btn[j][q]);//myframeにBtnを加える 88 Color transparent = new Color(0, 0, 0, 0); 89 Btn[j][q].setBackground(transparent); 90 Btn[j][q].setBounds(80+(32*q),200+(32*j),32,32); 91 System.out.print(Btn[j][q]); 92 } 93 } 94 95 96 97 98 mypanels = new Panel[13][6]; 99 puyomatrix = new int[13][6]; 100 colorList = new Color[5]; 101 colorList[0] = Color.gray; 102 colorList[1] = Color.white; 103 colorList[2] = Color.yellow; 104 colorList[3] = Color.red; 105 colorList[4] = Color.green; 106 107 for( x = 0; x < 6; x++ ) { 108 for( y = 0; y < 13; y++ ) { 109 Panel p = new YPanel(); 110 mypanels[y][x] = p; 111 myframe.add(p); 112 p.setBounds(80+puyoSize*x,200+puyoSize*y,puyoSize,puyoSize); 113 setpuyo(x,y,0); // no puyo is here 114 } 115 } 116 for( x = 0; x < 6; x++ ) { 117 setpuyo(x,12,1); // ground is here、 この値を221行目の仮引数に代入 118 } 119 120 121 122 boolean firstPlacing = true; 123 boolean gameIsOver = false; 124 int fallCount = 0; 125 126 while( gameIsOver != true) { 127 lock = false; 128 sleep(100);//降りてくるのが遅くなる 129 lock = true; 130 while( lock2 ) { sleep(10); } 131 if( firstPlacing ) { 132 firstPlacing = false; 133 color1 = (int)(Math.random()*3)+2; 134 //color2 = (int)(Math.random()*3)+2; 135 puyoX = 3; puyoY = 1; // initialPlace 136 137 if( puyomatrix[puyoY][puyoX] == 0//上のぷよの座標が0になる=上に当たってしまった 138 ) {//下の‥↑ 139 setpuyo(puyoX,puyoY,0); 140 //setpuyo(puyoX2,puyoY2,color2); 141 //System.out.print("next puyo is here.\n"); 142 } else { 143 // GAME OVER 144 // ImageIcon icon7 = new ImageIcon("./img/7.png"); 145 setpuyo(puyoX,puyoY,0); 146 //setpuyo(puyoX2,puyoY2,color2); 147 System.out.print("batan kyu-\n"); 148 gameIsOver = true; 149 System.exit(0); 150 } 151 } 152 if( fallCount > 5 ) { 153 fallCount = 0; // counter reset; 154 puyoY++; // fall it for one block 155 //puyoY2++; 156 if( puyomatrix[puyoY][puyoX] == 0) 157 { 158 setpuyo(puyoX,puyoY-1,0); 159 //setpuyo(puyoX2,puyoY2-1,0); 160 setpuyo(puyoX,puyoY,color1); 161 //setpuyo(puyoX2,puyoY2,color2); 162 } else { 163 firstPlacing = true; 164 // undo falling 165 puyoY--; 166 // puyoY2--; 167 // fall each puyo 168 while(puyomatrix[puyoY+1][puyoX] == 0) { 169 setpuyo(puyoX,puyoY,0); 170 puyoY++; 171 setpuyo(puyoX,puyoY,0); 172 } 173 /*while(puyomatrix[puyoY2+1][puyoX2] == 0) { 174 setpuyo(puyoX2,puyoY2,0); 175 puyoY2++; 176 setpuyo(puyoX2,puyoY2,color2); 177 } 178 */ 179 // clear connected puyos and falldown other puyos... 180 // !!--check here--!! 181 182 // !!--check here--!! 183 } 184 } else { 185 fallCount++; 186 } 187 } 188 189} 190 191 192static void setpuyo(int x, int y, int color) { 193 puyomatrix[y][x] = color; 194 mypanels[y][x].setBackground(colorList[color]); 195} 196static int getpuyo(int x, int y) { // why don't you use this!? 197// System.out.print(puyomatrix[y][x]); 198return puyomatrix[y][x]; 199} 200 201static void fallPuyos() { 202 int fallcount; 203 int nx,ny,nr; 204 205 do { 206 fallcount = 0; 207 int x,y; 208 for( y = 12; y > 0; y-- ) { 209 for( x = 1; x <= 6; x++ ) { 210 if( puyomatrix[y][x] != 0 && puyomatrix[y+1][x] == 0 ) { 211 setpuyo(x,y+1,puyomatrix[y][x]); // fall the puyo 212 setpuyo(x,y,0); // the last position should be empty 213 fallcount++; // count-up fallout counter 214 } 215 } 216 } 217 } while( fallcount != 0 ); 218 219} 220 221 222static void sleep(long msec) { 223 try{ 224 Thread.sleep(msec);//指定した時間の長さにわたって現在のスレッドを中断 225 }catch(InterruptedException ie) { 226 } 227} 228} 229

自分は

java

1setpuyo(puyoX,puyoY,0);

も用いることで出来ると考えていました。ですが、ぷよぷよのように降ってきているブロックが積み重なってしまいます。どうすれば思うように動くでしょうか。よろしくお願いします。
追記
自分の力不足なんですけど、その場しのぎでコードを書いていたために、背景などに画像を挿入しないと動きません。ごめんなさい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kota_Kappa

2019/01/26 05:30

読み解くのが手間だったので説明が欲しいのですが、 puyomatrix[][]と、colorの役割について説明願えますか? 現状、該当ブロックの色をなくすことで「空きブロック」を表現してるのかな? て感じで見てますが、そこらへんの説明があったほうが回答付きやすいので。
rink

2019/01/26 05:38

その通りです。puyomatrix[][]は、ブロックの色情報を格納していて、指定のブロックの色がない=空ブロックちうことです。 よろしくお願いします。
Kota_Kappa

2019/01/26 05:45

配列の一番下に行くと、降ってくるブロックが消える、とありますが 私の想像している「同色を揃えたら消える落ちゲー」とかではなくて、 「最下段に落ちたらそれ以上降ってこなくなる」と読み取れるのですが、合ってます?
rink

2019/01/26 05:50

ああ、僕の日本語がダメでした。 もともと降ってきているブロックをクリックして消す動作がほしいんですけど、クリックできずに配列の一番下にブロックが当たってしまったらそのブロックも同様に消して、当たってしまった分をカウントするという形を目指しています。 なので、配列の一番下にブロックが当たってしまっても、まだブロックは上から降ってきます。
Kota_Kappa

2019/01/26 05:58

手間かけて申し訳ありません。 もうちょっと確認を。 現状、動作させると ①1個目のぷよAが降ってくる ②ぷよAが最下段に到達する (←消したいけど消えない) ③2個目のぷよBが降ってくる ④ぷよBがぷよAの頭上に乗っかる ということでしょうか?
rink

2019/01/26 06:07

いやいや、こちらこそすいません。 その通りです。
jimbe

2019/01/26 10:55

なるほど, 「降ってきているブロックをクリックして消す動作」ということでボタンの2次元配列があるんですね. ボタンの配列(Btn[][])も使われていないので, なんだろうと思っていました.
rink

2019/01/26 11:16

分かりにくくてすいません。。。ボタンを配列にすればクリックしたところで消す動作が実現できると思いました。
guest

回答2

0

ベストアンサー

クラスshooting2以下全体像です。

もともとclass shooting2{ で始まったカッコと、
mainメソッドで始まったカッコ の中身を修正してるので、{ の個数がおかしくなりがちです。
注意1) 途中の lock2 というboolean がいきなり登場しているあたり、これが動作に影響しているのかは
不明です。

注意2) 言い訳ではないですが、質問時のコードでコメントアウトされている部分に、カッコ}が1個
巻き込まれています。このせいでインデントが混乱しており、else{ fallCount++:}が本来どの部分に入っていたのか不明です。
ここかな?という場所に記述しておきました。 動作に変な影響が出る可能性を残しています。

java

1public class shooting2 { 2 static JLabel mylabel; 3 static Panel mypanels[][]; 4 static int puyomatrix[][]; 5 static Color colorList[]; 6 static int score = 0; 7 static int puyoX = 3, puyoY = 1;//上の方のブロックのx座標とY座標 8 //static int puyoX2 = 3, puyoY2 = 2; 9 //static int puyoX = 9, puyoY = 2; 10 //static int puyoX2 = 9, puyoY2 = 3; 11 static int color3 = (int) (Math.random() * 3) + 2; 12 static int color4 = (int) (Math.random() * 3) + 2; 13 static int color1 = 0, color2 = 0; 14 //static int rotate = 0; 15 static boolean lock = false; 16 static boolean lock2 = false; 17 18 static JButton[][] Btn;//ボタン 19 20 21 /* static int puyoX3=9; 22 static int puyoY3=2; 23 static int puyoX4=9; 24 static int puyoY4=3;*/ 25 26 public static void main(String args[]) { 27 int i, x, y, j, q = 0; 28 final int puyoSize = 32; 29 30 31 JFrame myframe = new JFrame("ウンチ撃退ゲーム"); 32 myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 33 myframe.setSize(470, 580); 34 myframe.setLocationRelativeTo(null); 35 JLabel background = new JLabel(new ImageIcon("./png/6.png")); 36 myframe.add(background); 37 myframe.setVisible(true); 38 39 ImageIcon labelicon = new ImageIcon("./png/4.png");//背景? 40 mylabel = new JLabel(labelicon); 41 mylabel.setLayout(null); // does not use layout manager 42 mylabel.setSize(400, 600); // window size : width = 400, height = 600 43 mylabel.setVisible(true); // make the window visible 44 //mylabel.addWindowListener(new MyWindowAdapter()); 45 46 47 ImageIcon buttonicon = new ImageIcon("./png/1.png");//配列上に出る、透明のやつ 48 Btn = new JButton[13][6];//真ん中 49 for (j = 0; j < 13; j++) { 50 for (q = 0; q < 6; q++) { 51 Btn[j][q] = new JButton(buttonicon); 52 myframe.add(Btn[j][q]);//myframeにBtnを加える 53 Color transparent = new Color(0, 0, 0, 0); 54 Btn[j][q].setBackground(transparent); 55 Btn[j][q].setBounds(80 + (32 * q), 200 + (32 * j), 32, 32); 56 System.out.print(Btn[j][q]); 57 } 58 } 59 mypanels = new Panel[13][6]; 60 puyomatrix = new int[13][6]; 61 colorList = new Color[5]; 62 colorList[0] = Color.gray; 63 colorList[1] = Color.white; 64 colorList[2] = Color.yellow; 65 colorList[3] = Color.red; 66 colorList[4] = Color.green; 67 68 for (x = 0; x < 6; x++) { 69 for (y = 0; y < 13; y++) { 70 Panel p = new YPanel(); 71 mypanels[y][x] = p; 72 myframe.add(p); 73 p.setBounds(80 + puyoSize * x, 200 + puyoSize * y, puyoSize, puyoSize); 74 setpuyo(x, y, 0); // no puyo is here 75 } 76 } 77 for (x = 0; x < 6; x++) { 78 setpuyo(x, 12, 1); // ground is here、 この値を221行目の仮引数に代入 79 } 80 boolean firstPlacing = true; 81 boolean gameIsOver = false; 82 int fallCount = 0; 83 84 while (gameIsOver != true) { 85 lock = false; 86 sleep(100); 87 lock = true; 88 while (lock2) { 89 sleep(10); 90 } 91 if (firstPlacing) { 92 firstPlacing = false; 93 color1 = (int) (Math.random() * 3) + 2; 94 95 puyoX = 3; 96 puyoY = 1; 97 98 if (puyomatrix[puyoY][puyoX] == 0) { 99 setpuyo(puyoX, puyoY, 0); 100 } else { 101 setpuyo(puyoX, puyoY, 0); 102 System.out.print("batan kyu-\n"); 103 gameIsOver = true; 104 System.exit(0); 105 } 106 } 107 if (fallCount > 5) { 108 fallCount = 0; 109 puyoY++; 110 if (puyoY == 13) { 111 setpuyo(puyoX, 12, 0); 112 firstPlacing = true; 113 } else { 114 if (puyomatrix[puyoY][puyoX] == 0) { 115 setpuyo(puyoX, puyoY - 1, 0); 116 setpuyo(puyoX, puyoY, color1); 117 118 } else { 119 firstPlacing = true; 120 puyoY--; 121 while (puyomatrix[puyoY + 1][puyoX] == 0) { 122 setpuyo(puyoX, puyoY, 0); 123 puyoY++; 124 setpuyo(puyoX, puyoY, 0); 125 } 126 } 127 } 128 } else { 129 fallCount++; 130 } 131 } 132 } 133 134 static void setpuyo(int x, int y, int color) { 135 puyomatrix[y][x] = color; 136 mypanels[y][x].setBackground(colorList[color]); 137 } 138 static int getpuyo(int x, int y) { // why don't you use this!? 139// System.out.print(puyomatrix[y][x]); 140 return puyomatrix[y][x]; 141 } 142 143 static void sleep(long msec) { 144 try{ 145 Thread.sleep(msec);//指定した時間の長さにわたって現在のスレッドを中断 146 }catch(InterruptedException ie) { 147 } 148 } 149 150 151 152}

投稿2019/01/26 16:51

Kota_Kappa

総合スコア116

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rink

2019/01/26 18:15

御早い回答ありがとうございます。 消えませんでした…。もともとぷよぷよを改造しているので、4つ重なったら消えるというものは実現しておりますので、質問を編集して、そこにコードを貼らせていただきます。何かの参考になると思います。よろしくお願いします。
rink

2019/03/20 09:31 編集

java
rink

2019/03/20 09:32 編集

java
rink

2019/01/26 18:33

二つをつなげていただくと実行できると思います。
Kota_Kappa

2019/01/27 00:08

さっきのコードで、コンパイルエラーは解決したということでよろしいでしょうか? 私の手元では、これを実行する環境がないので 文法が合っているかどうか、しかチェックできません。 非常に労力がかかるので今日はお休みを頂きますが、まずやって頂きたいことがひとつ。 最下段に落ちたら消える、と処理を書いた部分(if puyoY=13の中身)に、ログ出力をしてみてください。たとえばplintlnでもいいです。反応が目に見えるものなら何でもいいです。 処理がifの中身に進入していれば、plintlnが実行されるはずです。 ログが出ないときは、ifに進入してないことになりますよね。そのときはifの条件を直す。 ログが出るなら、ifは実行していることになりますよね。それで下段が透明にならないのであれば、そのときはメソッドが働いていない。setpuyo()に抜け穴があるってことになる。 ここからやりましょう。
rink

2019/01/27 02:35

色々とありがとうございます。。。 少しだけですけど何かわかってきたような気がします! firstPlacing = true; の後に入れたplintlnは実行されていましたが、消えていませんでした。なのでsetpuyo()に問題があると思います。
guest

0

puyomatrix[y][x]は、y==12が最下段を表すようですので、
最下段のぷよをsetpuyo( , ,0)でクリアする方針です。

java

1for( y = 12; y > 0; y-- ) { 2 for( x = 1; x <= 6; x++ ) { 3 if( puyomatrix[y][x] != 0 && puyomatrix[y+1][x] == 0 ) { 4 setpuyo(x,y+1,puyomatrix[y][x]); // fall the puyo 5 setpuyo(x,y,0); // the last position should be empty 6       //挿入 7 fallcount++; // count-up fallout counter 8 } 9 } 10 } 11

この挿入部分に

java

1if(y==12 && puyomatrix[y][x] !=0){ 2 setpuyo(puyoX,puyoY,0); 3}

を差し込んでみるとか、どうでしょうか。手元に検証環境がないので、そちらで試してみてください。

投稿2019/01/26 06:35

Kota_Kappa

総合スコア116

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rink

2019/01/26 06:50

解決策有難うございます。 まだ上に乗ってしまう状況です…。ほかのところにも同じように追加するべきでしょうか?
Kota_Kappa

2019/01/26 06:54

setpuyo(puyoX,puyoY,0) → setpuyo(x,12,0) はどうですか?
rink

2019/01/26 07:00

出来ませんでした…
Kota_Kappa

2019/01/26 07:16

すみません 確認させてください ①動作は、1ブロックずつ落ちていますか? ②関係ないかもしれませんが、fallcountは何ですか?
Kota_Kappa

2019/01/26 07:33

いま気になっているのが、fallPuyos()ってどこで呼ばれているのかな、という点です。 いまさらなんですけど笑。 もしかして機能してないのでは
rink

2019/01/26 07:58

①はい。 ②fallcountは、ブロックが落ちていると気に、次に落ちるところが空で、そことブロックが入れ替わる過程が成立したら、ぶろっくはまだ落ちているということで、逆に入れ替わらなかったら次の場所が空ではない=落ちきったということなので、落ちたというカウントがなされます。もともと配列の大きさ的に、5回落ちきったら配列の大きさを超えてしまうということだったので、このような仕組みを搭載しました。
rink

2019/01/26 08:01

fallpuyo(); 呼ばれていないことに今気づきました。ごめんなさい! どこで呼び出せばいいですか?自分でいじっておきながら分からなくなってしまいました…
Kota_Kappa

2019/01/26 08:18

違ってたら非常に失礼なんですけど、 これ恐らく他の誰かがオリジナルで作ったコードに、質問者様が付け足した格好だと思うんですよ。 それが悪いってことではなく、 mainブロックのなかに、同じ機能をもった箇所が既にあるんですね。いま働いているのは元からあるコードなのだと思います。 最初からしっかり読まなかった私のミスです、申し訳ありません。 方法としては、 ケース1. mainブロックのなかにそのメソッドを入れる。代わりに元コードとバッティングする箇所を抜く。 ケース2. 元からあるmainブロックのなかに、「下段を消す」処理を追加する。fallPuyo()が不要になる。 2のほうが手前はかからなそうです。
rink

2019/01/26 08:20

その通りです!すごいですね… 課題で出たやつをいじりまくったって感じです。。。 ありがとうございます!
Kota_Kappa

2019/01/26 08:46

いったん仕事で数時間離れますので、戻ったときに解決してなければ、コード例でも提示してみます。
rink

2019/01/26 08:47

とてもありがたいです。。。自分も頑張って解決へと努力します。 よろしくお願いします。
Kota_Kappa

2019/01/26 14:39

一応、上のケース2で考えているんですけど、謎な部分があって挙動が分からない。 謎①(←これはおそらく今回の問題と直接の関係はなさそう)  fallcountって、フレーム的な使い方してそうな気がする。  一回の画面更新でfallcountを+1していき、6カウントごとに描画してるのかな?  ブロックが落ちている間、6カウント経過するごとに1ブロック下へ移動させている節があります。 謎② if( fallCount > 5 ) {}の中身について   1. カウント5を超えたら、0にリセットする   2. y座標を1増やす(1マス下をみる)   3. 1マス下が空なのか存在なのかをifで分岐する     3-A). 空の場合         現在のマスをクリアする         下のマスへ色を移す     3-B). 存在している場合         設置完了フラグをtrueにする         y座標を1減らす(分岐直前で増やしているのを元に戻した)。         while登場(現在より1マス下が空のうちは延々と繰り返すという条件)            現在のマスをクリアする            y座標を1増やす            下のマスもクリアする    のループ このwhileが謎で、3-Bの内側に設置している以上は到達不可能ではないか?ということ。 3-B)は、下にぷよが存在している場合の処理だから。 しかも、whileの処理は上下2段をクリアしてます。これ恐らく連結したぷよの消去ではなかろうか? それらしきコメントが近にこっそり書いてあるんですよ。 一方、最下段到達時にクリアする処理ですが、 コードは if(puyoY==13){ setpuyo(puyoX,12,0); firstPlacing = true; } を、fallcount=0; puyoY++; の次の行あたりに入れてみてください。 if ( fallCount>5){ fallCount = 0; puyoY++; if(puyoY == 13){ setpuyo(puyoX,12,0); firstPlacing = true; }else{ if ( puyomatrix[puyoY][puyoX] == 0){ setpuyo(puyoX,puyoY-1,0); setpuyo(puyoX,puyoY,color1); }else{ firstPlacing = true; puyoY--; while(puyomatrix[puyoY+1][puyoX] == 0){ setpuyo(puyoX,puyoY,0); puyoY++; setpuyo(puyoX,puyoY,0); } } } }
Kota_Kappa

2019/01/26 14:46

↑インデントされてないのでブロックは気を付けてください。 if ( puyoY ==13){ }else{   ここに既存の3-A) 3-B)が包含される感じです }
rink

2019/01/26 15:46

if ( fallCount>5){ fallCount = 0; puyoY++; if(puyoY == 13){ setpuyo(puyoX,12,0); firstPlacing = true; }else{ if ( puyomatrix[puyoY][puyoX] == 0){ setpuyo(puyoX,puyoY-1,0); setpuyo(puyoX,puyoY,color1); }else{ firstPlacing = true; puyoY--; while(puyomatrix[puyoY+1][puyoX] == 0){ setpuyo(puyoX,puyoY,0); puyoY++; setpuyo(puyoX,puyoY,0); } } } } のように書き換えたところ、その次のところで shooting2.java:176: エラー: 式の開始が不正です static void setpuyo(int x, int y, int color) { ^ とエラーが出てしまいます。。
Kota_Kappa

2019/01/26 15:57

それは私の案がエラーを起こした可能性もある一方で、 「どこかの行の終わり方が間違っている」ときにもよく出るエラーです。 例えば、}で終わる箇所が少なくなっていたり、行末の ; が抜けていたり。 まず、開始{ と 閉じ}の個数をチェックしてみてください。 次に、処理文の最後 ; が抜けていないかチェックしてください。 あとあり得るのは、引数のコンマ , も可能性あるのかな。
Kota_Kappa

2019/01/26 16:07

私のコメントで、コードの最後が }4個並んでますけど、 元あるコードの while( gameIsOver != true) {   //この部分! } で囲まれた箇所ですので、 結果的にはstatic void~の手前に }が5個並んでいなければなりませんよ? ここが心配です
Kota_Kappa

2019/01/26 16:17

ちょっとまっててくださいね。 いま私のほうのエディターで構文チェックしてみます。 コメント*/ と /* の間に{が1個巻き込まれていて、おかしくなってますね。 新たに回答を作ります。
rink

2019/01/26 16:55

力不足で色々と申し訳ないです。 とても助かります…。
rink

2019/01/28 02:32

色々と自分で見直してみたところ、配列の数を一つ減らして、それに対応する部分のsetpuyoを言われてみたとおりにしてみたところ、消えるようになりました!! 色々と助けていただいてとっても助かりました! Kota_Kappaさん、いろいろとありがとうございました!
Kota_Kappa

2019/01/28 03:13

なんで?って思ったときには、ログ出力して確かめると解決もするし仕組みもわかるので、今後も詰まったらデバッグの一つとして実施してみてください。 おめでとうございます。
rink

2019/01/28 12:11

なるほど…、とてもためになります! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問