チーム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

このWIKIを編集するにはパスワード入力が必要です

認証パスワード