// 串口实现石头剪刀布
// 石头:1
// 剪刀:2
// 布:3
#include "Adafruit_SSD1306.h"
#include "Adafruit_GFX.h"
#include "Wire.h"
int user = 0; //代表用户的出拳
int machine = 0; //代表机器的出拳
String result;
String name[] = {"shitou","jiandao","bu"};
Adafruit_SSD1306 oled(128,64,&Wire,-1);
void setup() {
//串口初始化
Serial.begin(9600);
//显示屏初始化
if(!oled.begin(SSD1306_SWITCHCAPVCC,0x3C)){
Serial.println("oled init is failure!");
for(;;);
}
//显示屏清屏
oled.clearDisplay();
}
void winner(int user,int machine){
switch(user){
case 1:
switch(machine){
case 1:
result = "平局";
break;
case 2:
result = "用户胜利";
break;
case 3:
result = "机器胜利";
break;
}
break;
case 2:
switch(machine){
case 1:
result = "机器胜利";
break;
case 2:
result = "平局";
break;
case 3:
result = "用户胜利";
break;
}
break;
case 3:
switch(machine){
case 1:
result = "用户胜利";
break;
case 2:
result = "机器胜利";
break;
case 3:
result = "平局";
break;
}
break;
}
}
void loop() {
while(1){
//等待用户出拳
Serial.print("用户出拳:");
while(!user){
if(Serial.available()>0 && (user = Serial.parseInt())){ //确保用户输入的都是非0的数字
if(user<0 || user >3){
Serial.println("出拳错误,请重输入!");
user = 0;
Serial.print("用户出拳:");
continue;
}
Serial.println(name[user-1]);
}
}
//机器随机出拳
Serial.print("机器出拳:");
while(!machine){
machine = random(1,4);
Serial.println(name[machine-1]);
}
//获取结果并输出
winner(user,machine);
Serial.print("结果为:");
Serial.println(result);
//重置
machine = user = 0;
}
}