嗨嘿嗨,我又来了!!!C++游戏系列我又来更新啦!!!
今天我带给各位同志们一个《卡牌加减乘》的游戏!
好啦我我话不多说,上!代!码!啦!
#include <iostream> #include <algorithm> #include <cstdlib> #include <ctime> using namespace std; // 运算牌 struct Card { // 运算符 op 0:- 1:+ 2:* // 数字 num int op, num; void print() { if (op == 0) { cout << "-"; } if (op == 1) { cout << "+"; } if (op == 2) { cout << "*"; } cout << num; } }; // 玩家 struct Player { // win 胜场 aid 数字牌序号 bid 运算牌序号 res 结果 int win, aid, bid, res; int a[15]; // 数字牌 Card b[15]; // 运算牌 }; Player pi, me; int cnt = 6; // 手牌数 // 数字牌 按照数字从大到小排序 bool cmp_a(int x, int y) { return x > y; } // 运算牌 减牌按照数字从大到小排序,加乘牌按照数字从小到大排序 bool cmp_b(Card x, Card y) { if (x.op != y.op) { return x.op < y.op; } if (x.op == 0) { return x.num > y.num; } return x.num < y.num; } // 计算算式结果 int cal(int a, Card b) { if (b.op == 0) { return a - b.num; } if (b.op == 1) { return a + b.num; } return a * b.num; } // 游戏介绍 void intro() { cout << "卡牌加减乘" << endl; cout << "游戏规则:" << endl; cout << "你方和对方各抽取6张随机数字卡和6张运算卡," << endl; cout << "每轮每方挑选1张数字卡贴在自己的数字区,1张运算卡贴在对方的运算区," << endl; cout << "你方的运算结果如大于对方两局则挑战成功。" << endl; } // 初始化手牌 void init() { // 数字0~9 运算符0~2 srand(time(0)); for (int i = 1; i <= 6; i++) { pi.a[i] = rand() % 10; pi.b[i].num = rand() % 10; pi.b[i].op = rand() % 3; me.a[i] = rand() % 10; me.b[i].num = rand() % 10; me.b[i].op = rand() % 3; } sort(me.a + 1, me.a + 7, cmp_a); sort(me.b + 1, me.b + 7, cmp_b); sort(pi.a + 1, pi.a + 7, cmp_a); sort(pi.b + 1, pi.b + 7, cmp_b); pi.aid = 1; pi.bid = 1; } // 展示手牌 void showhand() { cout << "你的手牌:" << endl; cout << "序 号: ①\t②\t③\t④\t⑤\t⑥" << endl; cout << "数字牌: "; for (int i = 1; i <= cnt; i++) { cout << me.a[i] << "\t"; } cout << endl; cout << "运算牌: "; for (int i = 1; i <= cnt; i++) { me.b[i].print(); cout << "\t"; } cout << endl; } // 确定出牌 void decision() { cout << "请选择你要使用的数字牌序号:" << endl; cin >> me.aid; while (me.aid > cnt || me.aid < 1) { cout << "没有该数字牌!请重新输入!" << endl; cout << "请选择你要使用的数字牌序号:" << endl; cin >> me.aid; } cout << "请选择你要使用的运算牌序号:" << endl; cin >> me.bid; while (me.bid > cnt || me.bid < 1) { cout << "没有该运算牌!请重新输入!" << endl; cout << "请选择你要使用的运算牌序号:" << endl; cin >> me.bid; } } // 展示出牌 void showcard() { me.res = cal(me.a[me.aid], pi.b[pi.bid]); pi.res = cal(pi.a[pi.aid], me.b[me.bid]); cout << "--------------------" << endl; cout << "你的结果:" << endl; cout << "数字\t运算\t等于" << endl; cout << me.a[me.aid] << "\t"; pi.b[pi.bid].print(); cout << "\t" << me.res << endl << endl; cout << "皮皮的结果:" << endl; cout << "数字\t运算\t等于" << endl; cout << pi.a[pi.aid] << "\t"; me.b[me.bid].print(); cout << "\t" << pi.res << endl; } // 比较当局胜负 void pk() { cout << "--------------------" << endl; if (me.res > pi.res) { cout << "你拿下了关键的一局!" << endl; me.win++; } if (me.res == pi.res) { cout << "缘分啊,平局!" << endl; } if (me.res < pi.res) { cout << "很遗憾,错失一局!" << endl; pi.win++; } cout << endl; } // 游戏环节 void game() { // 初始化手牌 init(); int round = 1; while (pi.win < 2 && me.win < 2) { cout << "----------------------------------------" << endl; cout << "第 " << round << " 轮" << endl; // 展示你的手牌 showhand(); // 确定出牌 decision(); // 展示出牌 showcard(); // 比较当局胜负 pk(); // 更新变量及手牌 cnt--; round++; pi.bid++; pi.aid++; for (int i = me.aid; i <= cnt; i++) { me.a[i] = me.a[i + 1]; } for (int i = me.bid; i <= cnt; i++) { me.b[i] = me.b[i + 1]; } } } // 展示游戏胜负结果 void result() { if (me.win == 2) { cout << "你赢了!你是最棒的!" << endl; } else { cout << "你输了!胜败乃兵家常事,大侠请从头来过" << endl; } } int main() { // 游戏介绍 intro(); // 游戏环节 game(); // 结果 result(); return 0; }
好了同志们我们这期文章就接近尾声了,
我预告一下我们这个C++游戏系列我会持续更新的哦,
拜拜了同志们!!!!!!!!!!
本站作者已申明原创,禁止转载!
文章内容属作者个人观点,不代表本站立场,如有侵权立删。