清除控制台以模拟菜单C
Clearing a console to simulate menus C++
找到了我写的基于文本的岩石剪刀应用后,我决定改进代码。现在,我想在返回主菜单之前和执行请求的应用程序操作之前写入控制台以清除屏幕。这是代码:
#include <iostream>
#include <string>
#include <cstdlib>
#include <time.h>
#include <algorithm>
using namespace std;
void scoreCounter(int playerWins, int playerTies, int playerLosses, int compWins, int compTies, int compLosses)
{
cout << "PLAYER SCORE:nn";
cout << "Wins: " << playerWins << "n";
cout << "Losses: " << playerLosses << "n";
cout << "Ties: " << playerTies << "nnn";
cout << "COMPUTER SCORE:nn";
cout << "Wins: " << compWins << "n";
cout << "Losses: " << compLosses << "n";
cout << "Ties: " << compTies << "nnn";
}
void mainMenu()
{
cout << "Main Menunn";
cout << "1) Play Rock Paper Scissorsn";
cout << "2) Display scoreboardn";
cout << "3) Exit appn";
cout << "n";
}
void rockPaperScissorsShoot(int playerWins, int playerTies, int playerLosses, int compWins, int compTies, int compLosses) {
cout << "Rock Paper Scissors Shoot!n";
string playerChoice;
cin >> playerChoice;
transform(playerChoice.begin(), playerChoice.end(), playerChoice.begin(), ::tolower);
int n1;
int n2;
int n3;
srand(time(NULL));
if (playerChoice == "Rock" || playerChoice == "rock") {
n1 = rand() %3;
if (n1 == 0) {
cout << "You win!n";
playerWins++;
compLosses++;
}
else if (n1 == 1) {
cout << "You lose!n";
playerLosses++;
compWins++;
}
else if (n1 == 2) {
cout << "You tied!n";
playerTies++;
compTies++;
}
}
else if (playerChoice == "Paper" || playerChoice == "paper") {
n2 = rand() %3;
if (n2 == 0) {
cout << "You win!n";
playerWins++;
compLosses++;
}
else if (n2 == 1) {
cout << "You lose!n";
playerLosses++;
compWins++;
}
else if (n2 == 2) {
cout << "You tied!n";
playerTies++;
compTies++;
}
}
else if (playerChoice == "Scissors" || playerChoice == "scissors") {
n3 = rand() %3;
if (n3 == 0) {
cout << "You win!n";
playerWins++;
compLosses++;
}
else if (n3 == 1) {
cout << "You lose!n";
playerLosses++;
compWins++;
}
else if (n3 == 2) {
cout << "You tied!n";
playerTies++;
compTies++;
}
}
else {
cout << "You made an invalid choice. Ending game...n";
}
}
int main()
{
bool gameOver = 0;
bool exitProg = 0;
int playerWins = 0;
int playerTies = 0;
int playerLosses = 0;
int compWins = 0;
int compTies = 0;
int compLosses = 0;
int menuChoice;
while (exitProg != 1)
{
mainMenu();
cin >> menuChoice;
switch (menuChoice)
{
case 1:
{
while (gameOver == 0) {
rockPaperScissorsShoot(playerWins, playerTies, playerLosses, compWins, compTies, compLosses);
cout << "Would you like to play again? Press Y or N:n";
char yOrN;
cin >> yOrN;
switch (yOrN) {
case 'Y': {
cout << "Ok then!n";
break;
}
case 'y': {
cout << "Ok then!n";
break;
}
case 'N': {
cout << "Game over.n";
gameOver = 1;
break;
}
case 'n': {
cout << "Game over.n";
gameOver = 1;
break;
}
}
}
cout << "n";
break;
}
case 2:
{
scoreCounter(playerWins, playerTies, playerLosses, compWins, compTies, compLosses);
break;
}
case 3:
{
exitProg = 1;
system("PAUSE");
break;
}
}
}
return 0;
}
我考虑使用cin.clear()
,但是如果我想打开其他功能,我认为这对我没有帮助。我该怎么办?
对于任何找到这个问题的人,我在加载其他操作之前使用system("CLS");
清除控制台。
相关文章:
- 如何使用Google Mock来模拟gettimeofday()
- G锁定铸造到基础上会释放模拟行为
- 无法获取菜单选择以运行函数.C++
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 落砂模拟碰撞检测C++和SFML
- 在gtest.中使用fff.h模拟系统API
- 谷歌模拟和覆盖关键字
- 用C#中的并集模拟C++嵌套结构
- 在同一模拟中使用静脉和静脉_ inet内容时出现运行时错误
- 在模拟器中使用并集来模拟CPU寄存器有多合适
- 我写了一个C++程序来模拟Enigma机器.我没有得到输出
- 如何模拟不同边数的骰子滚动?
- 模拟持久按键
- 使用SIR模型的疾病爆发模拟
- 在 c++ 中模拟输入并在 JAVA 中读取它?
- C++ 中的图形菜单
- C++ 程序菜单使用做同时和切换
- 清除控制台以模拟菜单C
- 有没有一种方法可以模拟从鼠标右键菜单发送到控制台的调用
- 鼠标按钮模拟-右键和上下文菜单问题