游戏规则是,开局,系统会先问你玩不玩,如果选择了1,就表示要玩,这时候,系统会随机,生成一个1到21之间的数字,你每次都会随机抽取一个1到21之间的数字,重复抽取,则,抽到的数字会累加,这时候系统会问你抽不抽号码,你如果一直选择抽取,数字,也会累加,如果,你一直抽取,数字累加到大于21过后,就直接判定你自爆了,你输了,系统赢了,你也可以选择,在抽取到一定时候,手动停止,这时候,系统就会,把你抽到的数字总和,和系统生成的数字,比较,谁的数值大,谁就获得胜利。数字相同,就获得平局(终端运行)
function randomNum(min, max = 0) { //随机函数 ,
min > max ? [min, max] = [max, min] : "";
return parseInt((max - min + 1) * Math.random() + min);
}
const rs = require("readline-sync");
//构建一个玩家类
class Player {
constructor(num) {
this.num = num; //每次抽到的点数
this.sum = 0; //点数的总和
}
}
//系统类
class Compter {
constructor(point) {
this.point = point; //电脑的点数
}
main() {
let star = null; //决定玩不玩,默认为空
console.log(`要不要玩? 1.玩 2.不玩`); //开局问玩家玩不玩,输入1,玩就进入下一步,输入2,不玩的话,就直接结束代码
let choice = rs.question(); //获取用户输入
// if (choice == 1) {
// star = true;
// } else {
// console.log(`不玩算了,拜拜6`);
// }
choice == 1 ? star = true : console.log(`不玩算了,拜拜6`); //三目运算法 //判断,用户的输入,输入的如果是,上面声明的变量为true。,如果不是1,结束代码,并提示
if (star) { //判断上面的变量是不是为true。是true,就代表用户按得就是1
console.log(`游戏马上开始`); //提示用户开始后
this.point = randomNum(10, 21); //随机生成一个电脑的点数,并把随机的数字,赋值给类里面的点数
let play = new Player(); // 这时,实例化一个玩家的类
while (true) { //创建一个死循环
console.log(`抽不抽牌? 1. 抽 2.不抽了`); //提示用户,要不要抽取点数
let cards = rs.question() - 0; //获取用户的输入
switch (cards) { //判断用户的输入
case 1: //如果输入的是1,就随机生成一个玩家的点数,并把随机的数字,赋值给类里面的点数
play.num = randomNum(1, 10);
play.sum += play.num; //并且类里面点数的总和,每次累加抽到的点数
if (play.sum > 21) { //如果用户一直抽取,就判断,玩家抽取的总和,如果大于21过后。
play.sum = 0; //玩家点数归零
console.log(`你自爆输了!系统获得胜利!`); //并且直接判定,玩家自爆输了
return; //然后结束函数。
}
// console.log(`玩家点数:${play.sum},系统点数${this.point}`);
break;
case 2: //玩家如果,抽取不大于21,输入2,手动停止后,调用,系统类的另一个,方法,并且,把系统点数和玩家点数,当做实参,传到调用的方法的形参里面,去匹对判断,谁的大小,并执行后面代码,输出判断结果。
this.box(this.point, play.sum);
return; //结束函数。
}
}
}
}
box(a, b) { //接收系统和玩家点数,进行判断。
if (a > b) {
console.log(`系统获得胜利`);
} else if (a < b) {
console.log(`恭喜你赢了`);
} else {
console.log(`打成平局了`);
}
}
}
new Compter().main(); //实例一个电脑对象,调用他的一个方法。