UNO小游戏2

server/2024/10/22 15:27:38/

前言

hello,大家好我是文宇。最近也是抽出时间更一期了。

bug还是很多(恼),所以就当个乐子看看,反正后面还会有的,先把这玩意儿发了再说。

正文

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
bool can = 1;
int colorsz1[25];
int cardsz1[25];
int colorsz2[25];
int cardsz2[25];
int onecard;
int onecolor;
int cardaa;
int coloraa;
int sj;
int j;
int sr;
string player1;
string player2;
void rule() {cout << "  规则:\n";cout << "  1.输入牌的位置出牌                         \n";cout << "  2.只可以出与当前桌面颜色或数字相同的卡牌   \n";cout << "  3.10号卡可以使你的下家增加2张牌            \n";cout << "  4.11号卡可以使你的下家无法出牌一回         \n";cout << "  5.12号卡可以转换当前颜色                   \n";cout << "  6.13号卡可以转换当前颜色,并让下家增加4张牌 \n";cout << "  7.其余1~9号卡没有特殊效果                  \n";cout << "  8.谁的牌先打完谁就赢了                     \n";cout << "  9.明牌打                                   \n";cout << "  10.手牌上限为25张                          \n";cout << "  11.当你的手牌为25张时你就输了              \n";cout << "  12.开局有6张牌                             \n";cout << "  13.牌显示为0为空位                         \n";return;
}
void statr() {cout << "     --------欢迎来到uno游戏---------\n";rule();cout << "  请输入玩家1的名字:";cin >> player1;cout << "\n  请输入玩家2的名字:";cin >> player2;system("cls");cout << "游戏开始\n";cout << "洗牌ing\n";return;
}
void carda() {srand(time(0)*time(0));sj = rand() % 13 + 1;cardaa = sj;sj = rand() % 4 + 1;coloraa = sj;return;
}
void cards1() {for (int i = 0; i <= 6; i++) {srand(time(0)*time(0));sj = rand() % 13 + 1;cardsz1[i] = sj;sj = rand() % 4 + 1;if (sj == 1) {colorsz1[i] = 1;}if (sj == 2) {colorsz1[i] = 2;}if (sj == 3) {colorsz1[i] = 3;}if (sj == 4) {colorsz1[i] = 4;}_sleep(1000);}return;
}
void cards2() {for (int i = 0; i <= 6; i++) {srand(time(0)*time(0));sj = rand() % 13 + 1;cardsz2[i] = sj;sj = rand() % 4 + 1;if (sj == 1) {colorsz2[i] = 1;}if (sj == 2) {colorsz2[i] = 2;}if (sj == 3) {colorsz2[i] = 3;}if (sj == 4) {colorsz2[i] = 4;}_sleep(1000);}return;
}
bool allZero1() {int total = 0;for (int i = 0; i < 25; i++) {if (cardsz1[i] == 0) {total++;}}if (total == 25) {return true;}return false;
}
bool allZero2() {int total = 0;for (int i = 0; i < 25; i++) {if (cardsz2[i] == 0) {total++;}}if (total == 25) {return true;}return false;
}
void onecards() {srand(time(0)*time(0));sj = rand() % 13 + 1;onecard = sj;sj = rand() % 4 + 1;onecolor = sj;return;
}
void card10_1() {srand(time(0)*time(0));sj = rand() % 13 + 1;for (int i = 0; i <= 25; i++) {if (cardsz2[i] == 0) {cardsz2[i] = sj;break;}}sj = rand() % 4 + 1;for (int i = 0; i <= 25; i++) {if (colorsz2[i] == 0) {colorsz2[i] = sj;break;}}}
void card10_2() {srand(time(0)*time(0));sj = rand() % 13 + 1;for (int i = 0; i <= 25; i++) {if (cardsz1[i] == 0) {cardsz1[i] = sj;break;}}sj = rand() % 4 + 1;for (int i = 0; i <= 25; i++) {if (colorsz1[i] == 0) {colorsz1[i] = sj;break;}}srand(time(0)*time(0));sj = rand() % 13 + 1;for (int i = 0; i <= 25; i++) {if (cardsz1[i] == 0) {cardsz1[i] = sj;break;}}sj = rand() % 4 + 1;for (int i = 0; i <= 25; i++) {if (colorsz1[i] == 0) {colorsz1[i] = sj;break;}}return;
}
void card12() {cout << "转换为红输入1\n";cout << "转换为绿输入2\n";cout << "转换为蓝输入3\n";cout << "转换为黄输入4\n";cin >> sr;if (sr == 1) onecolor = 1;if (sr == 2) onecolor = 2;if (sr == 3) onecolor = 3;if (sr == 4) onecolor = 4;return;}
void card13_1() {cout << "转换为红输入1\n";cout << "转换为绿输入2\n";cout << "转换为蓝输入3\n";cout << "转换为黄输入4\n";cin >> sr;if (sr == 1) onecolor = 1;if (sr == 2) onecolor = 2;if (sr == 3) onecolor = 3;if (sr == 4) onecolor = 4;srand(time(0)*time(0));sj = rand() % 13 + 1;for (int i = 0; i <= 25; i++) {if (cardsz2[i] == 0) {cardsz2[i] = sj;break;}}sj = rand() % 4 + 1;for (int i = 0; i <= 25; i++) {if (colorsz2[i] == 0) {colorsz2[i] = sj;break;}}srand(time(0)*time(0));sj = rand() % 13 + 1;for (int i = 0; i <= 25; i++) {if (cardsz2[i] == 0) {cardsz2[i] = sj;break;}}sj = rand() % 4 + 1;for (int i = 0; i <= 25; i++) {if (colorsz2[i] == 0) {colorsz2[i] = sj;break;}}return;
}
void card13_2() {cout << "转换为红输入1\n";cout << "转换为绿输入2\n";cout << "转换为蓝输入3\n";cout << "转换为黄输入4\n";cin >> sr;if (sr == 1) onecolor = 1;if (sr == 2) onecolor = 2;if (sr == 3) onecolor = 3;if (sr == 4) onecolor = 4;srand(time(0)*time(0));sj = rand() % 13 + 1;for (int i = 0; i <= 25; i++) {if (cardsz1[i] == 0) {cardsz1[i] = sj;break;}}sj = rand() % 4 + 1;for (int i = 0; i <= 25; i++) {if (colorsz1[i] == 0) {colorsz1[i] = sj;break;}}srand(time(0)*time(0));sj = rand() % 13 + 1;for (int i = 0; i <= 25; i++) {if (cardsz1[i] == 0) {cardsz1[i] = sj;break;}}sj = rand() % 4 + 1;for (int i = 0; i <= 25; i++) {if (colorsz1[i] == 0) {colorsz1[i] = sj;break;}}return;
}
void display() {SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);cout << "\n\n玩家1的手牌是:";for (int i = 1; i <= 25; i++) {if (colorsz1[i] == 1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED); //redif (colorsz1[i] == 2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN); //greenif (colorsz1[i] == 3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE); //blueif (colorsz1[i] == 4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN); //yellowcout << cardsz1[i] << ' ';}cout << "\n\n";SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);cout << "玩家2的手牌是:";for (int i = 1; i <= 25; i++) {if (colorsz2[i] == 1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED); //redif (colorsz2[i] == 2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN); //greenif (colorsz2[i] == 3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE); //blueif (colorsz2[i] == 4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN); //yellowcout << cardsz2[i] << ' ';}cout << "\n\n";return;
}
int main() {statr();cards1();cards2();onecards();cardsz1[25] = 0;while (1) {
chu1:display();SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);cout << "\n当前桌面上的牌为:";if (onecolor == 1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED); //redif (onecolor == 2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN); //greenif (onecolor == 3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE); //blueif (onecolor == 4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN); //yellowcout << onecard << "\n";SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);if (allZero1()) {cout << player1 << "胜出!\n";return 0;} else if (allZero2()) {cout << player2 << "胜出!\n";return 0;}for (int i = 0; i <= 25; i++) {if (cardsz1[i] == onecard || cardsz1[i] == 13 || cardsz1[i] == 12) can = 0;if (colorsz1[i] == onecolor) can = 0;}if (can) {cout << "\n你没有可以出的,你获得一张:";if (coloraa == 1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED); //redif (coloraa == 2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN); //greenif (coloraa == 3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE); //blueif (coloraa == 4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN); //yellowcout << cardaa;} else {cout << player1 << "的回合,选择你的出卡:";cin >> sr;if ((cardsz1[sr] == onecard || colorsz1[sr] == onecolor || cardsz1[sr] == 12 || cardsz1[sr] == 13) && cardsz1[sr] != 0) {onecard = cardsz1[sr];onecolor = colorsz1[sr];cardsz1[sr] = 0;colorsz1[sr] = 0;if (cardsz1[sr] == 10) card10_1();if (cardsz1[sr] == 11) goto chu1;if (cardsz1[sr] == 12) card12();if (cardsz1[sr] == 13) card13_1();} else {cout << "\n不可以出这张\n";goto chu1;}}can = 1;
chu2:display();SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);cout << "\n当前桌面上的牌为:";if (onecolor == 1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED); //redif (onecolor == 2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN); //greenif (onecolor == 3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE); //blueif (onecolor == 4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN); //yellowcout << onecard << "\n";SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);for (int i = 0; i <= 25; i++) {if (cardsz2[i] == onecard || cardsz2[i] == 13 || cardsz2[i] == 12) can = 0;if (colorsz2[i] == onecolor) can = 0;}if (can) {cout << "\n你没有可以出的,你获得一张:";if (coloraa == 1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED); //redif (coloraa == 2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN); //greenif (coloraa == 3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE); //blueif (coloraa == 4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN); //yellowcout << cardaa;can = 1;} else {cout << player2 << "的回合,选择你的出卡:";cin >> sr;if ((cardsz2[sr] == onecard || colorsz2[sr] == onecolor || cardsz2[sr] == 12 || cardsz2[sr] == 13) && cardsz2[sr] != 0) {onecard = cardsz2[sr];onecolor = colorsz2[sr];cardsz2[sr] = 0;colorsz2[sr] = 0;if (cardsz2[sr] == 10) card10_2();if (cardsz2[sr] == 11) goto chu2;if (cardsz2[sr] == 12) card12();if (cardsz2[sr] == 13) card13_2();} else {cout << "\n不可以出这张\n";goto chu2;}}can = 1;}return 0;
}

之前规则的制表符因为一些bug就删了,没办法

 

 


http://www.ppmy.cn/server/111396.html

相关文章

RabbitMQ 是什么?应用场景有哪些?

RabbitMQ 是一个实现了高级消息队列协议&#xff08;AMQP&#xff09;的开源消息代理软件。 一、RabbitMQ 的特点 它具有以下主要特点&#xff1a; 1. 可靠性高&#xff1a;确保消息能够可靠地传输&#xff0c;即使在网络故障或服务器故障的情况下也能保证消息不丢失。 2. …

一种误差较小的轮廓面积计算算法

1.背景 基于微分思想的轮廓面积计算方法之一是将多边形轮廓边与X轴会Y轴进行围合&#xff0c;形成一个个梯形&#xff0c;每个梯形的面积有符号&#xff0c;累计求和即得到多边形轮廓的面积。详见博主之前的文章&#xff0c; 记录导致计算轮廓面积出错的一个坑点-CSDN博客文章…

数据切分的艺术:使用PyTorch的torch.utils.data.random_split精粹指南

数据切分的艺术&#xff1a;使用PyTorch的torch.utils.data.random_split精粹指南 在机器学习项目中&#xff0c;合理地分割数据集至关重&#xff0c;它不仅关系到模型训练的有效性&#xff0c;还直接影响到模型的泛化能力。PyTorch提供了一个强大的工具torch.utils.data.rand…

每天一个数据分析题(五百一十三)- 决策树算法

在决策树算法中&#xff0c;ID3使用哪个度量来进行特征的选择&#xff1f; A. 信息熵 B. 信息增益比 C. 信息增益 D. Gini指数 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Python&#xff0c;SQ…

工厂模式与策略模式的区别?

工厂模式&#xff1a;设计模式--工厂模式-CSDN博客 策略模式&#xff1a;设计模式--策略模式-CSDN博客 如果想具体了解工厂模式和策略模式&#xff0c;请移步上述博客~ 工厂模式与策略模式是两种常见的设计模式&#xff0c;这两种设计模式有几点较相似&#xff1a; 封装性&…

信息安全---(七)访问控制技术原理与应用

在使用本博客提供的学习笔记及相关内容时&#xff0c;请注意以下免责声明&#xff1a;信息准确性&#xff1a;本博客的内容是基于作者的个人理解和经验&#xff0c;尽力确保信息的准确性和时效性&#xff0c;但不保证所有信息都完全正确或最新。非专业建议&#xff1a;博客中的…

3、DjangoAdmin导出excel和csv文件

一、导出Excel 1、安装openpyxl库 2、admin文件 # 导入openpyxl库中的Workbook类&#xff0c;用于创建Excel文件 from openpyxl import Workbook # 导入Django的admin模块&#xff0c;用于在Django admin后台注册和管理模型 from django.contrib import admin # 导入…

2024最新最全面的JMeter 做接口加密测试

JMeter 怎么做接口的加密&#xff1f; JMeter如果需要做加密测试&#xff0c;是需要加密类型对应的jar包的。本文以MD5,加密作为教程。 1、在Test Plan 引用jar包&#xff1b; 2、添加BeanShell Sampler取样器&#xff0c;并输入调用代码 import md5.mymd5;//调用jar包 String…