#include "BreakOut.h"
unsigned char BreakOut::block[]=
{0x00, 0x7e, 0x56, 0x6a, 0x56, 0x6a, 0x56, 0x6a,
0x56, 0x6a, 0x56, 0x6a, 0x56, 0x6a, 0x7e,0x00};
unsigned char BreakOut::wall[]=
{
0xff, 0xff, 0xff, 0xff
};
unsigned char BreakOut::ball[]=
{0x3c, 0x7e, 0xff, 0xff, 0xff, 0xff,0x7e,0x3c};
BreakOut::BreakOut()
{
//ctor
bar_x = 42;
bar_y = 7;
n=18;
for(int i=0; i<n; i++) {
bar[i]=0x0f;
clbar[i]=0;
}
for(int i=0; i<8; i++) {
draw(96, i, wall, 4);
}
for(int y=0; y<3; y++)
for(int x=0; x<96; x+=16)
draw(x, y, block, 16);
ball_x=0;
ball_y=6;
Xdirection=Ydirection=0;
}
// バー描画
void BreakOut::drawBar(int diff)
{
int x = bar_x+diff;
if(x<0 || 80<=x) return;
draw(bar_x, bar_y, clbar, n );
bar_x += diff;
draw(bar_x, bar_y, bar, n );
}
void BreakOut::drawBall()
{
draw(ball_x, ball_y, clbar, 8 );
if(ball_x<=88 && Xdirection==0) {
ball_x += 4;
if(ball_x>88) {
Xdirection=1; // right
ball_x=82;
}
}
if(ball_x>0 && Xdirection==1){
ball_x -= 4;
if(ball_x<=0) {
Xdirection=0; // left
ball_x=0;
}
}
if(ball_y<=7 && Ydirection==0){ // up
if(--ball_y<3) {
Ydirection=1; // down
ball_y=3;
}
}
if(ball_y>=0 && Ydirection==1){ // down
if(++ball_y>=7) {
Ydirection=0; // up
ball_y=7;
}
if(ball_y==6){
if(bar_x<=ball_x && ball_x<bar_x+n){
Ydirection=0; // up
}
}
}
draw(ball_x, ball_y, ball, 8 );
}
|
1
2 ブロックのグラフィックデータ
3
4
5 壁のグラフィックデータ
6
7
8
9 ボールのグラフィックデータ
10
11
12 コンストラクタ
13
14
15 バーの初期位置
16
17
18 バーのグラフィックデータ作成
19
20
21
22
23 壁を描く
24
25
26
27 ブロックを描く
28 ボールの初期位置
29
30 ボールの初期移動方向(右、上)
31
32
33 バーを描く
34
35
36
37
38
39
40
41
42 バーの移動(上下左右)
43
44
45
46 4ドット移動させる
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 ボールを描く
77
|