接上三篇:
【Start_DSC28034PNT湖人开发板免费体验】(开源)控制机械臂小游戏
【Start_DSC28034PNT湖人开发板免费体验】定时器控制数字舵机
【Start_DSC28034PNT湖人开发板免费体验】1初识中科昊芯
【Start_DSC28034PNT湖人开发板免费体验】定时器控制数字舵机 - RISC-V MCU威廉希尔官方网站
社区 - 电子威廉希尔官方网站
论坛 - 广受欢迎的专业电子论坛! https://bbs.elecfans.com/jishu_2366546_1_1.html
我在其他论坛的网名叫"还没吃饭"
加入游戏机制.老虎、杠子、鸡游戏。
部分源代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "dsc_config.h"
#include <syscalls.h>
#include "IQmathLib.h"
#include "gpio.h"
int main(void)
{
InitSysCtrl();
LEDInit();
BeepInit();
DINT;
IER
= 0x0000;
IFR
= 0x0000;
InitPieVectTable();
InitCpuTimers();
GpioDataRegs.GPBSET.bit.GPIO32 = 1;
int v;
char player;
int computer;
char* options[] = {"Tiger", "Chicken",
"Worm", "Lion"};
printf("欢迎来到老虎、鸡、虫、杠子游戏!\n");
for
( v = 80; v > 40 ; v
{
ConfigCpuTimer(&CpuTimer1,
120, 2000);
CpuTimer1Regs.TCR.bit.TSS
= 0;
ConfigCpuTimer(&CpuTimer2,
120, 18000);
CpuTimer2Regs.TCR.bit.TSS
= 0;
CpuTimer1Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBSET.bit.GPIO32
= 1;
while(CpuTimer1Regs.TCR.bit.TIF
!= 1)
{
}
CpuTimer2Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBCLEAR.bit.GPIO32 = 1;
//GpioDataRegs.GPBTOGGLE.bit.GPIO32 = 1;
while(CpuTimer2Regs.TCR.bit.TIF != 1)
{
}
}
// 让计算机随机选择一个选项
srand(time(NULL));
computer = rand() % 4;
printf("玩家,请选择你的选项(T-老虎、C-鸡、W-虫、L-杠子):\n");
for ( v = 80; v > 40 ; v
{
ConfigCpuTimer(&CpuTimer1,
120, 2000);
CpuTimer1Regs.TCR.bit.TSS
= 0;
ConfigCpuTimer(&CpuTimer2,
120, 18000);
CpuTimer2Regs.TCR.bit.TSS
= 0;
CpuTimer1Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBSET.bit.GPIO33
= 1;
while(CpuTimer1Regs.TCR.bit.TIF
!= 1)
{
}
CpuTimer2Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBCLEAR.bit.GPIO33 = 1;
//GpioDataRegs.GPBTOGGLE.bit.GPIO32 = 1;
while(CpuTimer2Regs.TCR.bit.TIF != 1)
{
}
}
scanf(" %c", &player);
printf("计算机选择的选项是:%s\n", options[computer]);
// 判断获胜或平局
if (player == options[computer][0]) {
printf("平局!\n");
for
( v = 80; v > 40 ; v
{
ConfigCpuTimer(&CpuTimer1,
120, 1000);
CpuTimer1Regs.TCR.bit.TSS
= 0;
ConfigCpuTimer(&CpuTimer2,
120, 19000);
CpuTimer2Regs.TCR.bit.TSS
= 0;
CpuTimer1Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBSET.bit.GPIO40
= 1;
while(CpuTimer1Regs.TCR.bit.TIF
!= 1)
{
}
CpuTimer2Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBCLEAR.bit.GPIO40
= 1;
//GpioDataRegs.GPBTOGGLE.bit.GPIO32
= 1;
while(CpuTimer2Regs.TCR.bit.TIF
!= 1)
{
}
}
for
( v = 80; v > 40 ; v
{
ConfigCpuTimer(&CpuTimer1,
120, 1000);
CpuTimer1Regs.TCR.bit.TSS
= 0;
ConfigCpuTimer(&CpuTimer2,
120, 19000);
CpuTimer2Regs.TCR.bit.TSS
= 0;
CpuTimer1Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBSET.bit.GPIO44
= 1;
while(CpuTimer1Regs.TCR.bit.TIF
!= 1)
{
}
CpuTimer2Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBCLEAR.bit.GPIO44
= 1;
//GpioDataRegs.GPBTOGGLE.bit.GPIO41
= 1;
while(CpuTimer2Regs.TCR.bit.TIF
!= 1)
{
}
}
}
} else if ((player == 'T' && options[computer][0] == 'C') ||
(player == 'C' &&
options[computer][0] == 'W') ||
(player == 'W' &&
options[computer][0] == 'L') ||
(player == 'L' &&
options[computer][0] == 'T')) {
printf("恭喜,你获胜了!\n");
for
( v = 80; v > 40 ; v
{
ConfigCpuTimer(&CpuTimer1,
120, 1000);
CpuTimer1Regs.TCR.bit.TSS
= 0;
ConfigCpuTimer(&CpuTimer2,
120, 19000);
CpuTimer2Regs.TCR.bit.TSS
= 0;
CpuTimer1Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBSET.bit.GPIO32
= 1;
while(CpuTimer1Regs.TCR.bit.TIF
!= 1)
{
}
CpuTimer2Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBCLEAR.bit.GPIO32
= 1;
//GpioDataRegs.GPBTOGGLE.bit.GPIO32
= 1;
while(CpuTimer2Regs.TCR.bit.TIF
!= 1)
{
}
}
for
( v = 80; v > 40 ; v
{
ConfigCpuTimer(&CpuTimer1,
120, 1000);
CpuTimer1Regs.TCR.bit.TSS
= 0;
ConfigCpuTimer(&CpuTimer2,
120, 19000);
CpuTimer2Regs.TCR.bit.TSS
= 0;
CpuTimer1Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBSET.bit.GPIO33
= 1;
while(CpuTimer1Regs.TCR.bit.TIF
!= 1)
{
}
CpuTimer2Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBCLEAR.bit.GPIO33
= 1;
//GpioDataRegs.GPBTOGGLE.bit.GPIO41
= 1;
while(CpuTimer2Regs.TCR.bit.TIF
!= 1)
{
}
}
} else {
printf("很遗憾,你输了!\n");
for ( v = 80; v > 40 ; v
{
ConfigCpuTimer(&CpuTimer1,
120, 2000);
CpuTimer1Regs.TCR.bit.TSS
= 0;
ConfigCpuTimer(&CpuTimer2,
120, 18000);
CpuTimer2Regs.TCR.bit.TSS
= 0;
CpuTimer1Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBSET.bit.GPIO40
= 1;
while(CpuTimer1Regs.TCR.bit.TIF
!= 1)
{
}
CpuTimer2Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBCLEAR.bit.GPIO40
= 1;
//GpioDataRegs.GPBTOGGLE.bit.GPIO32
= 1;
while(CpuTimer2Regs.TCR.bit.TIF
!= 1)
{
}
}
for
( v = 80; v > 40 ; v
{
ConfigCpuTimer(&CpuTimer1,
120, 2000);
CpuTimer1Regs.TCR.bit.TSS
= 0;
ConfigCpuTimer(&CpuTimer2,
120, 18000);
CpuTimer2Regs.TCR.bit.TSS
= 0;
CpuTimer1Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBSET.bit.GPIO44
= 1;
while(CpuTimer1Regs.TCR.bit.TIF
!= 1)
{
}
CpuTimer2Regs.TCR.bit.TIF
= 1;
GpioDataRegs.GPBCLEAR.bit.GPIO44
= 1;
//GpioDataRegs.GPBTOGGLE.bit.GPIO32
= 1;
while(CpuTimer2Regs.TCR.bit.TIF
!= 1)
{
}
}
}
return 0;
}