標(biāo)題:
嘗試用MAX7219點(diǎn)陣模塊做了個(gè)小游戲
[打印本頁(yè)]
作者:
小華盛頓
時(shí)間:
2017-7-26 15:17
標(biāo)題:
嘗試用MAX7219點(diǎn)陣模塊做了個(gè)小游戲
本著人人為我,我為人人的態(tài)度,希望能幫助到和我一樣的菜鳥(niǎo):P
材料清單:Arduino uno一塊
MAX7219點(diǎn)陣模塊一個(gè)
普通按鈕2個(gè)
1K電阻2個(gè)
杜邦線若干
好了,我先上一個(gè)視頻吧
http://v.youku.com/v_show/id_XMjkxNTQ5MTgyMA==.html?spm=a2h3j.8428770.3416059.1
#include <Sprite.h>
#include <Matrix.h>
#include <MsTimer2.h>
Matrix myGame = Matrix(8,9,10,1);//
int x = 3;//球拍在x方向的位置
int y = 0;//球拍在y方向的位置
int x1;//球出現(xiàn)的x方向位置
int y1 = 0;//球出現(xiàn)的y方向位置
Sprite qiupai = Sprite(
2,2,
B11,
B11
);//球拍的圖案
Sprite quxiao = Sprite(
7,8,
B0000000,
B0000000,
B0000000,
B0000000,
B0000000,
B0000000,
B0000000,
B0000000
);//取消所有圖案
Sprite quxiaoqiupai = Sprite(
7,1,
B0000000
);//取消球拍圖案
Sprite qiu = Sprite(
1,1,
B1
);//球的圖案
Sprite XX = Sprite(
7,6,
B0000000,
B0100010,
B0010100,
B0001000,
B0010100,
B0100010
);//失敗后的圖案
void setup()
{
myGame.clear();//清楚,重啟
myGame.setBrightness(4);//設(shè)置顯示亮度
myGame.write(3,7,qiupai);//初始化顯示球拍
randomSeed(analogRead(0));//隨機(jī)初始化球的位置
x1 = random(1,7);//設(shè)置隨機(jī)范圍
pinMode(2,OUTPUT);//定義2號(hào)引腳為輸出模式
pinMode(3,OUTPUT);//定義3號(hào)引腳為輸出模式
MsTimer2::set(10,flash);//設(shè)置定時(shí)器中斷,中斷函數(shù)為flash
MsTimer2::start();//啟動(dòng)定時(shí)器中斷
}
void loop()
{
myGame.write(x1,y1,qiu);//顯示球
delay(100);//球降落的速度延時(shí)100ms
y1 ++;//球的y軸不斷增加,表示球一步步降落
if(y1 == 8)//如果球降到最底部
{
if((x1 == x)||(x1 == x + 1))//此時(shí),如果球的位置與球拍的位置是重合的,表示接球成功
{
randomSeed(analogRead(0));//系統(tǒng)重新隨機(jī)安排另一個(gè)球
x1 = random(1,7);//設(shè)置隨機(jī)范圍
y1 = 0;//球首先出現(xiàn)在最高點(diǎn)
}
else//否沒(méi)有接到球
{
for(int i = 0;i < 6;i ++)//閃爍顯示X,代表剛剛?cè)蝿?wù)失敗
{
myGame.write(1,0,XX);//顯示X
delay(500);
myGame.write(1,0,quxiao);//隱藏
delay(500);
}
randomSeed(analogRead(0));//過(guò)了6秒后,系統(tǒng)游戲重新開(kāi)始,球隨機(jī)回到起點(diǎn)
x1 = random(1,7);
y1 = 0;
}
}
myGame.write(1,0,quxiao);//關(guān)閉顯示,消除重影
}
void flash() //中斷處理函數(shù),主要處理,按鍵隨時(shí)按下時(shí),球拍能及時(shí)響應(yīng)
{
if(digitalRead(3) == HIGH)//如果右邊被按下,球拍往右走
{
delay(200);//
x ++;//橫坐標(biāo),自加1
if(x == 6)//如果加到最右邊時(shí)
{
x = 5;//限定最右達(dá)到第5格
}
while(digitalRead(3) == HIGH)//等待按鍵松開(kāi)
{
}
}
if(digitalRead(2) == HIGH)//如果左邊被按下,球拍往左邊走
{
delay(200);
x --;//橫坐標(biāo),自減1
if(x == 0)//如果減到最左邊時(shí)
{
x = 1;//限定最左邊能做能到達(dá)第一格
}
while(digitalRead(2) == HIGH)//等待按鍵松開(kāi)
{
}
}
myGame.write(x,7,qiupai);//顯示球拍
delay(100);
myGame.write(1,7,quxiaoqiupai);//消除重影
delay(100);
}
復(fù)制代碼
作者:
龍之晨曦
時(shí)間:
2017-7-30 12:02
視頻打不開(kāi),一直緩存。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1