C# 在游戏中正确使用continue和break语句
我必须做一个像HiLo这样的纸牌游戏,你输入你的现金金额,得到两张牌,然后下注。如果第三张随机生成的卡介于其他两张卡之间,你就把那笔钱加到你的总数中,如果不是,你就输了那笔钱。代码应该做的一件事是,如果你不喜欢开始时给你的两张卡,你应该能够输入0,他们会给你新的卡。我最大的问题是,当我输入0时,它会给我两张新卡,然后询问我想投多少,当我输入该数字时,它基本上会忽略新的赌注,然后再次询问我。基本上,我必须写两倍的钱才能让它工作,我该如何解决这个问题C# 在游戏中正确使用continue和break语句,c#,C#,我必须做一个像HiLo这样的纸牌游戏,你输入你的现金金额,得到两张牌,然后下注。如果第三张随机生成的卡介于其他两张卡之间,你就把那笔钱加到你的总数中,如果不是,你就输了那笔钱。代码应该做的一件事是,如果你不喜欢开始时给你的两张卡,你应该能够输入0,他们会给你新的卡。我最大的问题是,当我输入0时,它会给我两张新卡,然后询问我想投多少,当我输入该数字时,它基本上会忽略新的赌注,然后再次询问我。基本上,我必须写两倍的钱才能让它工作,我该如何解决这个问题 using System; //find how
using System;
//find how to print dollar signs
class MainClass {
public static void Main (string[] args) {
var rnd = new Random();
int card1, card2, card3;
int playermoney = 0;
int betmoney = 0;
string exit = "";
Console.WriteLine("HiLo Card Game");
Console.Write("Enter the starting cash amount: $");
playermoney = Convert.ToInt32(Console.ReadLine());
while(exit!="n"){
card1 = rnd.Next(1,15);
card2 = rnd.Next(1,15);
Console.WriteLine("Cash balance is ${0}",playermoney);
Console.WriteLine("{0} - {1}", card1, card2);
Console.Write("The amount you want to bet? ");
betmoney = Convert.ToInt32(Console.ReadLine());
if (betmoney>=0){
if (betmoney == 0){
Console.WriteLine("Cash balance is ${0}",playermoney);
Console.WriteLine("{0} - {1}", rnd.Next(1,15), rnd.Next(1,15));
Console.Write("The amount you want to bet? ");
betmoney = Convert.ToInt32(Console.ReadLine());
continue;
}//end if 0
card3 = rnd.Next(1,15);
Console.WriteLine("Your card is a {0}", card3);
if(card1<card2){
if((card3>card1 && card3<card2)){
playermoney = playermoney+betmoney;
Console.WriteLine("WINNER! New Balance is {0}", playermoney);
}//end winner if
else{
playermoney = playermoney-betmoney;
Console.WriteLine("LOSER! New Balance is {0}", playermoney);
if (playermoney<0){
Console.WriteLine("--------------");
Console.WriteLine("game over");
break;
}//end negative if
}//end else loser
}
if (card1>card2){
if(card3>card2 && card3<card1){
playermoney = playermoney+betmoney;
Console.WriteLine("WINNER! New Balance is {0}", playermoney);
}
else{
playermoney = playermoney-betmoney;
Console.WriteLine("LOSER! New Balance is {0}", playermoney);
if (playermoney<0){
Console.WriteLine("--------------");
Console.WriteLine("game over");
break;
}//end negative if
}//end else loser
}
}
else{
Console.WriteLine("--------------");
Console.WriteLine("game over");
break;
}
Console.Write("Play Again? <y/n> ");
exit = Console.ReadLine();
Console.Clear();
}
}
}
使用系统;
//了解如何打印美元符号
类主类{
公共静态void Main(字符串[]args){
var rnd=新随机数();
内部卡1、卡2、卡3;
int playermoney=0;
int-betmoney=0;
字符串exit=“”;
Console.WriteLine(“HiLo纸牌游戏”);
控制台。写入(“输入起始现金金额:$”;
playermoney=Convert.ToInt32(Console.ReadLine());
while(退出!=“n”){
card1=rnd.Next(1,15);
card2=rnd.Next(1,15);
WriteLine(“现金余额为${0}”,playermoney);
WriteLine(“{0}-{1}”,card1,card2);
控制台。写下(“您想下注的金额?”);
betmoney=Convert.ToInt32(Console.ReadLine());
如果(betmoney>=0){
如果(betmoney==0){
WriteLine(“现金余额为${0}”,playermoney);
Console.WriteLine(“{0}-{1}”,rnd.Next(1,15),rnd.Next(1,15));
控制台。写下(“您想下注的金额?”);
betmoney=Convert.ToInt32(Console.ReadLine());
持续
}//如果为0,则结束
card3=下一个rnd(1,15);
WriteLine(“您的卡是{0}”,card3);
如果(card1card1和&card3card2和&card3如果betAmount
为0
(或小于零),我认为您要做的是立即继续,而不是在主循环中再次尝试拾取新卡:
if (betMoney < 1) continue;
continue
将跳转到下一个循环迭代,这意味着它将返回到而(exit!=“n”)
并再次运行。break
将退出循环。因此在继续游戏之前,您可能应该更改逻辑以验证betmoney
。此外,在if(betmoney==0)的代码块中
您不会更改card1
和card2
的值,但会在屏幕上显示新值。通常最好插入一些新行,将代码拆分为相关部分。这会使代码更易于阅读。如果下注为0,则最简单的“重置”方法是再次循环。而不是检查betmoney
两次,只需检查一次:如果(betmoney==0){continue;}否则{…
这非常有用,非常感谢
private static Random rnd = new Random();
static void Main()
{
Console.WriteLine("HiLo Card Game");
Console.WriteLine("--------------");
Console.Write("Enter the starting cash amount: $");
int playerMoney;
while (!int.TryParse(Console.ReadLine(), out playerMoney) ||
playerMoney < 1)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("Please enter a positive number for cash amount: $");
Console.ResetColor();
}
while (true)
{
// Draw two random cards
int card1 = rnd.Next(1, 15);
int card2 = rnd.Next(1, 15);
// Start the loop again if there is not at least
// one card available between card1 and card2
if (Math.Abs(card1 - card2) < 2) continue;
// Determine the min and max of the two random cards
var minCard = Math.Min(card1, card2);
var maxCard = Math.Max(card1, card2);
Console.Clear();
Console.WriteLine("HiLo Card Game");
Console.WriteLine("--------------");
Console.WriteLine("Cash balance is: ${0}", playerMoney);
Console.WriteLine("{0} - {1}", minCard, maxCard);
Console.Write("Enter the amount you want to bet: $");
int betMoney;
while (!int.TryParse(Console.ReadLine(), out betMoney))
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("Please enter a valid number for bet amount: $");
Console.ResetColor();
}
// If the bet amount is negative or 0, restart
// the loop so they can get new cards
if (betMoney < 1) continue;
// Draw a card for the player
int playerCard = rnd.Next(1, 15);
Console.WriteLine("Your card is: {0}", playerCard);
// If the players card is between the random cards, they win
if (playerCard < maxCard && playerCard > minCard)
{
playerMoney += betMoney;
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("WINNER! New Balance is ${0}", playerMoney);
Console.ResetColor();
}
else
{
playerMoney -= betMoney;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("LOSER! New Balance is ${0}", playerMoney);
Console.ResetColor();
if (playerMoney <= 0)
{
Console.WriteLine("--------------");
Console.Write("Game over. Press any key to exit...");
Console.ReadKey();
break;
}
}
Console.Write("Play Again? <y/n>: ");
if (Console.ReadKey().Key == ConsoleKey.N) break;
}
}