目录
- 在3*3的方格中
- 两种棋子
- 任何一种棋子有三个相连可赢得比赛
- STM32F103ZET6芯片
- 2.8寸触摸屏
- UCOSIII实时操作系统
- 设置背景 3*3 方格,创建 两种棋子
- 利用结构体创建棋子的所在的坐标
- 创建三个任务(开始任务、胜负判断控制任务、触摸屏控制任务)、创建一个软件定时器
- 创建棋子控制任务、触摸屏控制任务,并删除任务自身
- 一共有八种赢棋情况
- 利用条件判断语句判断胜负
- 触摸相应的各自会落下棋子
- 利用调度点(500ms)设置偶数次落下棋子为蓝色,奇数次落下棋子为绿色
触屏控制部分代码
- if(tp_dev.y[0]>=50 && tp_dev.y[0]<=100) //第一行
- {
- if(tp_dev.x[0]>=50 && tp_dev.x[0]<=100) //第一列
- {
- if(touch_num%2==0)
- {
- Paintphoto( 5,40,50,50,BLUE);
- Exame.c_11 =1;
- }
- else
- {
- Paintphoto( 5,40,50,50,GREEN);
- Exame.c_11 =2;
- }
- touch_num++;
- OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_PERIODIC,&err);//任务调度点
- }
-
- else if(tp_dev.x[0]>=100 && tp_dev.x[0]<=150)//第二列
- {
-
- if(touch_num%2==0)
- {
- Paintphoto( 5,40,100,50,BLUE);
- Exame.c_12 =1;
- }
- else
- {
- Paintphoto( 5,40,100,50,GREEN);
- Exame.c_12 =2;
- }
- touch_num++;
- OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_PERIODIC,&err);//任务调度点
- }
-
- else if(tp_dev.x[0]>=150 && tp_dev.x[0]<=200)//第三列
- {
- if(touch_num%2==0)
- {
- Paintphoto( 5,40,150,50,BLUE);
- Exame.c_13 =1;
- }
- else
- {
- Paintphoto( 5,40,150,50,GREEN);
- Exame.c_13 = 2;
- }
- touch_num++;
- OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_PERIODIC,&err);//任务调度点
-
- }
-
- }
- 没有设置平局情况
- 没有设置棋子落下就不可落棋子
- 判断赢棋的方法比较笨,可以尝试使用八邻域去判断
注:设置一些标志位啥的应该很好解决,只是要考研了,也懒得写了,之后再说吧,哈哈哈
提取码:6666