接上两篇:【瑞萨 RA6E2】+机械臂游戏(原创)1-数字舵机
                 【瑞萨 RA6E2】+机械臂游戏(原创)2-控制机械臂
下面是一个基于瑞萨 RA6E2开发板的老虎、鸡、虫、杠子的创意游戏示例:
部分源代码:
  1. int main() {
  2. char player;
  3. int v;
  4.     int computer;
  5.     char* options[] = {"Tiger", "Chicken", "Worm", "Lion"};

  6. printf("欢迎来到老虎、鸡、虫、杠子游戏!\n");
  7. //机械臂做出相应动作
  8. for ( v = 60; v > 40 ; v-- )
  9.      {
  10.                                           R_IOPORT_PinWrite (&g_ioport_ctrl, AI5, BSP_IO_LEVEL_HIGH);        
  11.                         R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_MILLISECONDS);
  12.                         R_IOPORT_PinWrite (&g_ioport_ctrl, AI5, BSP_IO_LEVEL_LOW);
  13.                         R_BSP_SoftwareDelay(19,BSP_DELAY_UNITS_MILLISECONDS);
  14.                   

  15.         }       
  16.        

  17.     // 让计算机随机选择一个选项
  18.     srand(time(NULL));
  19. computer = rand() % 4;
  20. //机械臂做出相应动作
  21.                        
  22.         for ( v = 60; v > 40 ; v-- )
  23.      {
  24.                                           R_IOPORT_PinWrite (&g_ioport_ctrl, AI1, BSP_IO_LEVEL_HIGH);        
  25.                         R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_MILLISECONDS);
  26.                         R_IOPORT_PinWrite (&g_ioport_ctrl, AI1, BSP_IO_LEVEL_LOW);
  27.                         R_BSP_SoftwareDelay(19,BSP_DELAY_UNITS_MILLISECONDS);
  28.                   

  29.         }
  30.        

  31. printf("玩家,请选择你的选项(T-老虎、C-鸡、W-虫、L-杠子):\n");
  32. //机械臂做出相应动作
  33.        
  34.                                  for ( v = 60; v > 40 ; v-- )
  35.      {
  36.                   
  37.                          
  38.                         R_IOPORT_PinWrite (&g_ioport_ctrl, AI8, BSP_IO_LEVEL_HIGH);
  39.                         R_BSP_SoftwareDelay(2,BSP_DELAY_UNITS_MILLISECONDS);
  40.                         R_IOPORT_PinWrite (&g_ioport_ctrl, AI8, BSP_IO_LEVEL_LOW);
  41.                         R_BSP_SoftwareDelay(8,BSP_DELAY_UNITS_MILLISECONDS);
  42.         }
  43.                
  44.     scanf(" %c", &player);

  45. printf("计算机选择的选项是:%s\n", options[computer]);
  46. //机械臂做出相应动作
  47.                
  48.                       for ( v = 60; v > 40 ; v-- )
  49.      {
  50.                   
  51.                          
  52.                         R_IOPORT_PinWrite (&g_ioport_ctrl, AI6, BSP_IO_LEVEL_HIGH);
  53.                         R_BSP_SoftwareDelay(2,BSP_DELAY_UNITS_MILLISECONDS);
  54.                         R_IOPORT_PinWrite (&g_ioport_ctrl, AI6, BSP_IO_LEVEL_LOW);
  55.                         R_BSP_SoftwareDelay(8,BSP_DELAY_UNITS_MILLISECONDS);
  56.         }
  57.        

  58.     // 判断获胜或平局
  59.     if (player == options[computer][0]) {
  60.         printf("平局!\n");
  61.                 //机械臂做出相应动作
  62.                       for ( v = 60; v > 40 ; v-- )
  63.      {
  64.                   
  65.                          
  66.                         R_IOPORT_PinWrite (&g_ioport_ctrl, AI1, BSP_IO_LEVEL_HIGH);
  67.                         R_BSP_SoftwareDelay(2,BSP_DELAY_UNITS_MILLISECONDS);
  68.                         R_IOPORT_PinWrite (&g_ioport_ctrl, AI1, BSP_IO_LEVEL_LOW);
  69.                         R_BSP_SoftwareDelay(8,BSP_DELAY_UNITS_MILLISECONDS);
  70.         }
  71.     } else if ((player == 'T' && options[computer][0] == 'C') ||
  72.                (player == 'C' && options[computer][0] == 'W') ||
  73.                (player == 'W' && options[computer][0] == 'L') ||
  74.                (player == 'L' && options[computer][0] == 'T')) {
  75.         printf("恭喜,你获胜了!\n");
  76.                        
  77.         for ( v = 60; v > 40 ; v-- ) //机械臂做出相应动作(只有获胜是两个动作)
  78.      {
  79.                                           R_IOPORT_PinWrite (&g_ioport_ctrl, AI6, BSP_IO_LEVEL_HIGH);        
  80.                         R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_MILLISECONDS);
  81.                         R_IOPORT_PinWrite (&g_ioport_ctrl, AI6, BSP_IO_LEVEL_LOW);
  82.                         R_BSP_SoftwareDelay(19,BSP_DELAY_UNITS_MILLISECONDS);
  83.         //机械臂做出相应动作        获胜 (只有获胜是两个动作)   
  84.                        
  85.         for ( v = 60; v > 40 ; v-- )
  86.      {
  87.                                           R_IOPORT_PinWrite (&g_ioport_ctrl, AI8, BSP_IO_LEVEL_HIGH);        
  88.                         R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_MILLISECONDS);
  89.                         R_IOPORT_PinWrite (&g_ioport_ctrl, AI8, BSP_IO_LEVEL_LOW);
  90.                         R_BSP_SoftwareDelay(19,BSP_DELAY_UNITS_MILLISECONDS);
  91.                   

  92.         }

  93.         }
  94.        
  95.     } else {
  96.         printf("很遗憾,你输了!\n");
  97. for ( v = 60; v > 40 ; v-- ) //机械臂做出相应动作
  98.      {
  99.                   
  100.                          
  101.                         R_IOPORT_PinWrite (&g_ioport_ctrl, AI5, BSP_IO_LEVEL_HIGH);
  102.                         R_BSP_SoftwareDelay(2,BSP_DELAY_UNITS_MILLISECONDS);
  103.                         R_IOPORT_PinWrite (&g_ioport_ctrl, AI5, BSP_IO_LEVEL_LOW);
  104.                         R_BSP_SoftwareDelay(8,BSP_DELAY_UNITS_MILLISECONDS);
  105.         }
  106.     }

  107.     return 0;
  108. }



在这个创意游戏中,玩家需要选择自己的选项(T-老虎、C-鸡、W-虫、L-杠子),然后计算机会随机选择一个选项。根据规则判断谁是获胜者或平局。规则如下:

  • 老虎吃鸡
  • 鸡吃虫
  • 虫拱杠子
  • 杠子打老虎

根据玩家和计算机的选择,根据规则进行判断并输出相应的结果,不同的结果机械臂就会做不同的动作。可根据机械臂不同的动作得知结果,并再次运行代码与计算机进行多次对战,看看谁能获得更多的胜利!你也可以根据需要进行修改和扩展这个游戏,添加更多的选项或增加更复杂的规则。

谢谢。