androidでブロック崩しを作っています。
配列の知識が乏しく、ブロックが正常に描画されないためご教授いただけると幸いです。
下記にてBlockクラスの配列をblock[]として作成、
その後 値をそれぞれ入れました。
SurfaceView内のrunメソッド内にてforし、drawRectしています。
エラーはないのですが、ブロックが描画されません。
MainActivity
Java
1//ーーーーー中略ーーーーー 2 3class CustomView extends SurfaceView implements SurfaceHolder.Callback, Runnable { 4 5 // スレッドクラス 6 Thread mainLoop = null; 7 // 描画用 8 Paint paint = null; 9 Paint paint2 = null; 10 Paint paint3 = null; 11 12 13 // 円のX,Y座標 14 private int circleX = 50; 15 private int circleY = 50; 16 private int circle2X = 30; 17 private int circle2Y = 30; 18 // 円の移動量 19 private int circleVx = 15; 20 private int circleVy = 15; 21 private int circle2Vx = 8; 22 private int circle2Vy = 15; 23 24 //今は6個だが、Block[ここに変数を入れて] 画面サイズによって表示できる個数を変えたい 25 Block block[] = new Block[6]; 26 27 28 int view_w, view_h; //画面サイズ 29 Resources res = this.getContext().getResources(); 30 Bitmap balor = BitmapFactory.decodeResource(res, R.drawable.balor); 31 Bitmap sraimKing = BitmapFactory.decodeResource(res, R.drawable.sraim_king); 32 33 34//ーーーーー中略ーーーーー 35 36//コンストラクタ 37 public CustomView(Context context) { 38 super(context); 39 // SurfaceView描画に用いるコールバックを登録する。 40 getHolder().addCallback(this); 41 // 描画用の準備 42 paint = new Paint(); 43 paint2 = new Paint(); 44 paint3 = new Paint(); 45 //ボール 46 paint.setColor(Color.GREEN); 47 paint2.setColor(Color.CYAN); 48 //ブロック 49 paint3.setColor(Color.RED); 50 51 52 53 } 54 55//ーーーーー中略ーーーーー 56 57@Override 58 public void run(){ 59 60 while (true) { 61 Canvas canvas = getHolder().lockCanvas(); 62 if (canvas != null) 63 { 64 view_h = canvas.getHeight(); 65 view_w = canvas.getWidth(); 66 67 block[0]= new Block(view_w/10, view_h - view_h +300); 68 block[1]= new Block(view_w/10 + 100, view_h - view_h +300); 69 block[2]= new Block(view_w/10 + 200, view_h - view_h +300); 70 block[3]= new Block(view_w/10 + 300, view_h - view_h +300); 71 block[4]= new Block(view_w/10 + 400, view_h - view_h +300); 72 block[5]= new Block(view_w/10 + 500, view_h - view_h +300); 73 74 // max720 1230 75 for(int i=0; i < 6;i+=1){ 76 77 canvas.drawRect(block[i].x -40,block[1].y, block[i].x +40, block[i].y +20,paint3); 78 79 } 80 81//ーーーーー中略ーーーーー 82
Blockクラス
java
1package com.example.canvastest; 2 3 4public class Block { 5 6 float x; 7 float y; 8 int margin = 10; //ブロックの間のマージン 9 int i; //カウンター 10 11 //コンストラクタ 12 public Block (int _x,int _y){ 13 this.x = (float)_x; 14 this.y = (float)_y; 15 } 16 17}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/26 08:24
2016/04/26 08:25
2016/04/26 08:42 編集
2016/04/26 08:50