🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

1回答

1949閲覧

ブロック崩しについて

likuson

総合スコア34

Java

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

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2020/12/08 05:41

前提・実現したいこと

processingでブロック崩しゲームを作成しています。
ブロックとボールに当たり判定をつけ、当たったブロックを削除する所まで
できたのですが、当たったあと黒い跡がついてしまいます。
この黒い跡を消したいです。
イメージ説明

発生している問題・エラーメッセージ

エラーメッセージは無いです。

該当のソースコード

processing

1int x=100; 2int y=560; 3int bar_w=10;//haba 4int bar_h=100;//nagasa 5int dx=5; 6int blockX=25,blockY=10 ;//blockzahyou 7int[]blocks={blockX,blockY};//zahyou 8int ellipseX=550; 9int ellipseY=545; 10int ellipseDx=5; //hayasa 11int ellipseDy=-2; 12int[][]positions=new int [200][200];//iti 13 14void setup(){ 15 size(1000,600); 16 displayBlocks(blocks,positions);//barwohyouzi 17 noStroke(); 18 loadPixels(); 19} 20 21void draw(){ 22 updatePixels(); 23 keyPressed(); 24 displayBar(); 25 moveBall(); 26 displayBall(); 27 reboundBall(positions); 28} 29 30void displayBar(){ 31 fill(255,0,0); 32 rect(x,y,bar_h,bar_w); 33} 34 35void displayBall(){ 36 fill(0,0,255); 37 ellipse(ellipseX,ellipseY,30,30); 38} 39 40void reboundBall(int[][] positions){ 41 42 if(ellipseX > 1000-15 && ellipseDx >0){ 43 ellipseDx=-ellipseDx; 44 } 45 46 if(ellipseY>583 && ellipseDy>0){ 47 noLoop(); 48 print("GAME OVER."); 49 } 50 51 if(ellipseY<15 && ellipseDy<0){ 52 ellipseDy=abs(ellipseDy);//abs=zettaiti 53 } 54 55 if(ellipseX < 15){ 56 ellipseDx=-ellipseDx; 57 } 58 59 if(ellipseX>= x && ellipseX <= x+100 && ellipseY >= y-17){ 60 ellipseDy=-ellipseDy; 61 } 62 63 for(int i=0;i<200;i++){ 64 noStroke(); 65 smooth(); 66 if(dist(ellipseX,ellipseY,positions[0][i],positions[1][i])<=17){ 67 ellipseDx=-ellipseDx; 68 ellipseDy=-ellipseDy; 69 fill(0); 70 rect(positions[0][i],positions[1][i],20,20); 71 positions[0][i]=-1; 72 positions[1][i]=-1; 73 ellipse(ellipseX,ellipseY,31,31); 74 rect(x,y,100,10); 75 loadPixels(); 76 77 } 78 } 79 80} 81 82void moveBall(){ 83 ellipseX=ellipseX+ellipseDx; 84 ellipseY=ellipseY+ellipseDy; 85} 86 87 88void displayBlocks(int[] block, int positions[][]){ 89 fill(0,255,0); 90 91 for(int i=0; i<200; i++){ 92 93 rect(block[0],block[1],20,20); 94 block[0]=block[0]+25; 95 positions[0][i]=block[0]; 96 positions[1][i]=block[1]; 97 if(block[0]>=950){ 98 block[1]=block[1]+25; 99 block[0]=25; 100 } 101 } 102} 103 104 105void keyPressed(){ 106 if(key==CODED){ 107 switch(keyCode){ 108 case LEFT: 109 if(isBlockedLeft(x)==true){ 110 return; 111 }else{ 112 x=x-dx; 113 } 114 break; 115 116 case RIGHT: 117 if(isBlockedRight(x)==true){ 118 return; 119 }else{ 120 x=x+dx; 121 } 122 break; 123 } 124 } 125} 126 127boolean isBlockedRight(int x){ 128 if(x>=width-bar_h){ 129 return true; 130 }else{ 131 return false; 132 } 133} 134 135boolean isBlockedLeft(int x){ 136 if(x<=0){ 137 return true; 138 }else{ 139 return false; 140 } 141}

試したこと

削除処理するプログラムを見直したのですが、訂正することが見当たりませんでした。

補足情報(FW/ツールのバージョンなど)

processing 3.5.4

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

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

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

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

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

y_waiwai

2020/12/08 05:50

ブロックの削除ってどの部分でしょうか
likuson

2020/12/08 06:07

if(dist(ellipseX,ellipseY,positions[0][i],positions[1][i])<=17){ ellipseDx=-ellipseDx; ellipseDy=-ellipseDy; fill(0); rect(positions[0][i],positions[1][i],20,20); positions[0][i]=-1; positions[1][i]=-1; ellipse(ellipseX,ellipseY,31,31); rect(x,y,100,10); loadPixels(); } この部分です
guest

回答1

0

ベストアンサー

とりあえず黒くなくすだけなら、
fill(0);fill(0xcc)
にすればいいけれど。

問題はそれだけじゃないし、
ブロック崩しとして本質的なところに問題がある気がします。

投稿2020/12/08 09:10

thkana

総合スコア7703

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問