I-O DATA DEV2 / Mbed 2 deprecated game01

Dependencies:   mbed

Committer:
hakusan270
Date:
Tue Nov 10 02:57:19 2020 +0000
Revision:
1:6e40bb2ed99c
Parent:
0:380869d1fc31
game  interrupt

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hakusan270 0:380869d1fc31 1 #include "mbed.h"
hakusan270 0:380869d1fc31 2
hakusan270 0:380869d1fc31 3 DigitalOut led(LED1);
hakusan270 0:380869d1fc31 4 //InterruptIn event(USER_BUTTON);
hakusan270 0:380869d1fc31 5 DigitalIn button(USER_BUTTON);
hakusan270 0:380869d1fc31 6 RawSerial pc(PA_2, PA_3,115200 );
hakusan270 0:380869d1fc31 7
hakusan270 1:6e40bb2ed99c 8 DigitalIn l_button(D4,PullUp);
hakusan270 1:6e40bb2ed99c 9 DigitalIn r_button(D3,PullUp);
hakusan270 1:6e40bb2ed99c 10
hakusan270 1:6e40bb2ed99c 11 InterruptIn event(USER_BUTTON);
hakusan270 1:6e40bb2ed99c 12 Ticker interrput;
hakusan270 0:380869d1fc31 13
hakusan270 0:380869d1fc31 14
hakusan270 0:380869d1fc31 15 char bdata[20][20]={
hakusan270 0:380869d1fc31 16 2,2,2,2,2 ,2,2,2,2,2, 2,2,2,2,2 ,2,2,2,2,2,
hakusan270 0:380869d1fc31 17 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 18 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 19 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 20 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 21 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 22 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 23 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 24 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 25 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 26 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 27 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 1:6e40bb2ed99c 28 2,0,0,0,0 ,0,1,0,0,1, 1,0,1,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 29 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 30 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 31 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 32 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 33 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 34 2,0,0,0,0 ,0,0,0,0,0, 0,0,0,0,0 ,0,0,0,0,2,
hakusan270 0:380869d1fc31 35 2,2,2,2,2 ,2,2,2,2,2, 2,2,2,2,2 ,2,2,2,2,2,
hakusan270 0:380869d1fc31 36 };
hakusan270 0:380869d1fc31 37
hakusan270 0:380869d1fc31 38
hakusan270 0:380869d1fc31 39
hakusan270 0:380869d1fc31 40 void cur_down()
hakusan270 0:380869d1fc31 41 {
hakusan270 0:380869d1fc31 42 pc.printf("\033B");
hakusan270 0:380869d1fc31 43 }
hakusan270 0:380869d1fc31 44
hakusan270 0:380869d1fc31 45 void cur_up()
hakusan270 0:380869d1fc31 46 {
hakusan270 0:380869d1fc31 47 pc.printf("\033A");
hakusan270 0:380869d1fc31 48 }
hakusan270 0:380869d1fc31 49
hakusan270 0:380869d1fc31 50
hakusan270 0:380869d1fc31 51
hakusan270 0:380869d1fc31 52 void cur_left()
hakusan270 0:380869d1fc31 53 {
hakusan270 0:380869d1fc31 54 pc.printf("\033D");
hakusan270 0:380869d1fc31 55 }
hakusan270 0:380869d1fc31 56
hakusan270 0:380869d1fc31 57 void cur_right()
hakusan270 0:380869d1fc31 58 {
hakusan270 0:380869d1fc31 59 pc.printf("\033C");
hakusan270 0:380869d1fc31 60 }
hakusan270 0:380869d1fc31 61
hakusan270 0:380869d1fc31 62 void cur_xy(int x,int y)
hakusan270 0:380869d1fc31 63 {
hakusan270 0:380869d1fc31 64 pc.printf("\033[%d;%dH",y,x);
hakusan270 0:380869d1fc31 65 }
hakusan270 0:380869d1fc31 66
hakusan270 0:380869d1fc31 67 void clear_all()
hakusan270 0:380869d1fc31 68 {
hakusan270 0:380869d1fc31 69 pc.printf("\033[2J\033[6m");//clear , under line
hakusan270 0:380869d1fc31 70 cur_xy(0,0);
hakusan270 0:380869d1fc31 71 }
hakusan270 0:380869d1fc31 72
hakusan270 0:380869d1fc31 73 void init_bd()
hakusan270 0:380869d1fc31 74 {
hakusan270 0:380869d1fc31 75 int x;
hakusan270 0:380869d1fc31 76 int y;
hakusan270 0:380869d1fc31 77 pc.printf("\033[2J");//clear
hakusan270 0:380869d1fc31 78 for(y=0;y<20;y++) {
hakusan270 0:380869d1fc31 79 cur_xy(1,y+1);
hakusan270 0:380869d1fc31 80 for(x=0;x<20;x++) {
hakusan270 0:380869d1fc31 81 if (bdata[y][x]==2) pc.printf("H");
hakusan270 0:380869d1fc31 82 else if (bdata[y][x]==1) pc.printf("@");
hakusan270 0:380869d1fc31 83 else pc.printf(" ");
hakusan270 0:380869d1fc31 84 }
hakusan270 0:380869d1fc31 85 }
hakusan270 0:380869d1fc31 86 }
hakusan270 0:380869d1fc31 87
hakusan270 1:6e40bb2ed99c 88 int dx=1;//横移動
hakusan270 1:6e40bb2ed99c 89 int dy=1;//縦移動
hakusan270 1:6e40bb2ed99c 90
hakusan270 1:6e40bb2ed99c 91 /* GPIO 割り込み */
hakusan270 1:6e40bb2ed99c 92 void pressed()
hakusan270 1:6e40bb2ed99c 93 {
hakusan270 1:6e40bb2ed99c 94 //pc.printf("Button pressed\n");
hakusan270 1:6e40bb2ed99c 95 dx = -dx;//横 動きを逆に
hakusan270 1:6e40bb2ed99c 96 }
hakusan270 1:6e40bb2ed99c 97
hakusan270 1:6e40bb2ed99c 98 /* タイマー割り込み */
hakusan270 1:6e40bb2ed99c 99 void intTimer()
hakusan270 1:6e40bb2ed99c 100 {
hakusan270 1:6e40bb2ed99c 101 led = !led;
hakusan270 1:6e40bb2ed99c 102 }
hakusan270 0:380869d1fc31 103
hakusan270 0:380869d1fc31 104 int main()
hakusan270 0:380869d1fc31 105 {
hakusan270 0:380869d1fc31 106 int i;
hakusan270 0:380869d1fc31 107 int x;
hakusan270 0:380869d1fc31 108 int y;
hakusan270 1:6e40bb2ed99c 109 clear_all(); //画面クリア 
hakusan270 1:6e40bb2ed99c 110 event.fall(&pressed); //ボタン押した時、 立下りエッジ割り込みの関数設定
hakusan270 1:6e40bb2ed99c 111 interrput.attach(&intTimer, 0.5f); //0.5秒タイマーで割り込みの関数設定
hakusan270 0:380869d1fc31 112
hakusan270 0:380869d1fc31 113 pc.printf("\nStart example\n");
hakusan270 1:6e40bb2ed99c 114 init_bd();//ブロックデータの初期化
hakusan270 1:6e40bb2ed99c 115 x=2;//横 初期位置
hakusan270 1:6e40bb2ed99c 116 y=0;//縦 初期位置
hakusan270 1:6e40bb2ed99c 117 i=0;
hakusan270 1:6e40bb2ed99c 118 while(1) {
hakusan270 1:6e40bb2ed99c 119 //範囲越え判定
hakusan270 1:6e40bb2ed99c 120 if (y>=17) dy=-1;
hakusan270 0:380869d1fc31 121 if (x>=19) dx=-1;
hakusan270 0:380869d1fc31 122 if (y<=0) dy=1;
hakusan270 0:380869d1fc31 123 if (x<=0) dx=1;
hakusan270 1:6e40bb2ed99c 124 //移動計算
hakusan270 0:380869d1fc31 125 x=x+dx;
hakusan270 0:380869d1fc31 126 y=y+dy;
hakusan270 1:6e40bb2ed99c 127 cur_xy(x+1,y+1); //カーソル座標設定
hakusan270 1:6e40bb2ed99c 128 if (bdata[y][x]==1) { //当たり判定
hakusan270 1:6e40bb2ed99c 129 bdata[y][x]=0; //ブロックをなくす
hakusan270 1:6e40bb2ed99c 130 pc.printf(" "); //@を消す
hakusan270 1:6e40bb2ed99c 131 cur_xy(x+1,y+1);//カーソルを戻す
hakusan270 1:6e40bb2ed99c 132 pc.printf("\007");//ベル音
hakusan270 0:380869d1fc31 133 }
hakusan270 1:6e40bb2ed99c 134
hakusan270 0:380869d1fc31 135 wait(0.1f);
hakusan270 1:6e40bb2ed99c 136 //ボタン操作
hakusan270 1:6e40bb2ed99c 137 // if (button==0) dx = -dx;
hakusan270 1:6e40bb2ed99c 138 // dx=0;
hakusan270 1:6e40bb2ed99c 139 // if (l_button==0) dx= -1;
hakusan270 1:6e40bb2ed99c 140 // else if (r_button==0) dx= 1;
hakusan270 0:380869d1fc31 141
hakusan270 1:6e40bb2ed99c 142 //パドル表示
hakusan270 1:6e40bb2ed99c 143 if (x<=1){
hakusan270 1:6e40bb2ed99c 144 cur_xy(1,19); //カーソル座標設定
hakusan270 1:6e40bb2ed99c 145 pc.printf("HXX ");
hakusan270 1:6e40bb2ed99c 146 } else if (x>=17) {
hakusan270 1:6e40bb2ed99c 147 cur_xy(17,19); //カーソル座標設定
hakusan270 1:6e40bb2ed99c 148 pc.printf(" XXH");
hakusan270 1:6e40bb2ed99c 149 } else {
hakusan270 1:6e40bb2ed99c 150 cur_xy(x,19);//カーソル
hakusan270 1:6e40bb2ed99c 151 pc.printf(" XX ");
hakusan270 1:6e40bb2ed99c 152 }
hakusan270 1:6e40bb2ed99c 153 cur_xy(x+1,y+1);//カーソルを戻す
hakusan270 1:6e40bb2ed99c 154 i++;
hakusan270 1:6e40bb2ed99c 155 if (i==100) __disable_irq(); // 禁止
hakusan270 1:6e40bb2ed99c 156 else if(i==200) __enable_irq(); // 許可
hakusan270 1:6e40bb2ed99c 157
hakusan270 0:380869d1fc31 158 }
hakusan270 1:6e40bb2ed99c 159
hakusan270 0:380869d1fc31 160 }
hakusan270 0:380869d1fc31 161
hakusan270 0:380869d1fc31 162