L_GAME_START:
bGameReStart =1;
while(1)
{
key_matrix_flip_scan(key_value); // 4 x 4 按钮矩阵扫描
if (key_value ==2 || key_value == 5 )OE_74HC595 = 1; //turn off 8x8 LED matrix
else OE_74HC595 = 0; // enable it otherwsie
switch (key_value)
{
case 1: // 按钮- 1
_8x8ledMatrixDisplay(mPONG);
bGameReStart = 1; // 从新开始游戏
continue;
case mPADDLE_UPP-1:
case mPADDLE_UPP:
myPaddle.pShift = mPADDLE_UPP - key_value;
myPaddle.pTop -=2;
if (myPaddle.pTop < 0)myPaddle.pTop =0;
goto L_GAME_UPDATE;
case mPADDLE_UP-1:
case mPADDLE_UP:
myPaddle.pShift = mPADDLE_UP - key_value;
myPaddle.pTop -=1;
if (myPaddle.pTop < 0)myPaddle.pTop =0;
goto L_GAME_UPDATE;
case mPADDLE_DOWN-2:
case mPADDLE_DOWN-1:
case mPADDLE_DOWN:
myPaddle.pShift = mPADDLE_DOWN - key_value;
myPaddle.pTop +=1;
if (myPaddle.pTop > 4)myPaddle.pTop =5;
goto L_GAME_UPDATE;
case mPADDLE_DOWND-3:
case mPADDLE_DOWND-2:
case mPADDLE_DOWND-1:
case mPADDLE_DOWND:
myPaddle.pShift = mPADDLE_DOWND - key_value;
myPaddle.pTop +=2;
if (myPaddle.pTop > 4)myPaddle.pTop =5;
goto L_GAME_UPDATE;
case mUPDATE_PONG:
if(bGameReStart)// re-start game
{
// 游戏初始化代码,前面已经讲解,此处不再重复
}
if (key_value ==2 || key_value == 5 )OE_74HC595 = 1; //turn off 8x8 LED matrix
else OE_74HC595 = 0; // enable it otherwsie
板子的设计者提示玩家,如果要禁止 8x8 LED 矩阵,可以使用跳针,其实没有这个必要,这个跳针设计是多余的。8x8 LED 矩阵的开关,完全可以通过软件加以控制。我在板子上加了一根飞线,用 sbit OE_74HC595 = P1^7 定义了其用法,接下来就可以用P1^7 端口控制74HC595芯片,从而实现8x8 LED 矩阵的开和关,大家留意一下下面视频和图片里的飞线即可。
..... ...... ...... let's call it a day. .................. .................... ................... ........................ ........... .......... .............