チーム1513
課題名
タイピングゲーム
研究者名
Ryo Matsumoto
Shinya Yanagisawa
概要
UARTによるタイピングゲーム
Tera Termに表示された文字を入力して3問正解でクリア
3問失敗でゲームオーバー
制限時間は10秒
'0'を入力すると強制終了
使用器具
ジャンパ線 2本
ソース
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#pragma interrupt_handler myISR
int TC=0;
void myISR(void){
TC += 1; if(TC == 6) { LCD_Position(0,4); LCD_PrCString("10"); } else if(TC == 6*2) { LCD_Position(0,4); LCD_PrCString("9 "); } else if(TC == 6*3) { LCD_Position(0,4); LCD_PrCString("8"); } else if(TC == 6*4) { LCD_Position(0,4); LCD_PrCString("7"); } else if(TC == 6*5) { LCD_Position(0,4); LCD_PrCString("6"); } else if(TC == 6*6) { LCD_Position(0,4); LCD_PrCString("5"); } else if(TC == 6*7) { LCD_Position(0,4); LCD_PrCString("4"); } else if(TC == 6*8) { LCD_Position(0,4); LCD_PrCString("3"); } else if(TC == 6*9) { LCD_Position(0,4); LCD_PrCString("2"); } else if(TC == 6*10) { LCD_Position(0,4); LCD_PrCString("1"); } else if(TC == 6*11) { LCD_Position(0,4); LCD_PrCString("Finish"); }
}
void main(void)
{
char *strPtr, *a; int success, miss, i; int c, d; char str[16]; LCD_Start(); //タイプする文字を宣言。 //char s0, s1, s2, s3, s4; //char s1 = 'a';
//s0 = 's'; //s1 = 'a'; //s2 = 'h'; //s3 = 'i'; //s4 = 'z';
UART_CmdReset(); UART_IntCntl(UART_ENABLE_RX_INT); Counter8_WritePeriod(155); Counter8_WriteCompareValue(77); Counter8_Start(); UART_Start(UART_PARITY_NONE); M8C_EnableGInt; UART_CPutString("\r\nTYPING GAME Start!!\r\n"); UART_CPutString("PUSH ANY OF KEYS\r\n"); Timer16_1_EnableInt(); Timer16_1_Start(); while(1) { success = 0; miss =0; if(UART_bCmdCheck()) { UART_szGetParam(); UART_CmdReset(); UART_CPutString("\r\nTYPE NEXT WORD\r\n"); *a = 'a'; UART_PutString(a); //表示された文字を入力し、判定する。 //終了条件を満たした場合の処理もする。 while(1) { if(UART_bCmdCheck()) { if(strPtr = UART_szGetParam()) { UART_PutString(strPtr); c = *strPtr; d = *a; csprintf(str, "%d, %d", c, d); UART_PutString(str); if(*strPtr == *a) { UART_CPutString("\r\nOK\r\n"); success++; } //0が入力されたら終了。 else if(*strPtr == '0') { UART_CPutString("\r\nFINISH\r\n"); break; } else { UART_CPutString("\r\nMISS\r\n"); miss++; }
//3回成功するか、失敗したら終了。 if(success == 3) { UART_CPutString("CLEAR!!\r\n"); break; } if(miss == 3) { UART_CPutString("GAME OVER\r\n"); break; } UART_CmdReset(); }//get }//check }//while if(success == 3 | | miss == 3 | | *strPtr == '0') break; UART_CmdReset(); }//cmdcheck }//while
}//main
考察
文字化けに悩まされてほとんどテストできなかった。また、残機のようにLEDを点灯させるよていだったがいくら正解を入力しても'OK'と出力されずその原因追究で時間が終わってしまった。
- 最終更新:2015-05-19 17:03:39