EndLoop()からbool doneの値を取得し、Start()メソッドに移動してmy whileループを終了するのが難しいです。私は間違って何をしていますか?他のメソッドからループを終了するためにboolを取得する
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
public static void Main(string[] args)
{
Start("r");
}
public static string Start(string move)
{
Console.Write("Welcome to the Shotgun App\nEnter s for single player and m for multiplayer: ");
string gameType = Console.ReadLine();
if (gameType == "s")
{
Console.Write("Single Player Controls:\n r = reload\n s = shield\n f = fire\nYou start with 1 ammo\nReady to play?");
Console.ReadLine();
int ammo = 1;
int geniusAmmo = 1;
string geniusMove = "";
bool done = false;
while (!done)
{
Console.Write("\nEnter your move: ");
move = Console.ReadLine();
switch (move)
{
case "r":
Console.Write("\nYou have reloaded, press enter for Genius\n");
ammo++;
Console.Write("Your ammo is " + ammo);
Console.ReadLine();
Genius(geniusMove, move, geniusAmmo, done);
break;
case "s":
Console.Write("\nYou have shielded, press enter for Genius\n");
Console.Write("Your ammo is " + ammo);
Console.ReadLine();
Genius(geniusMove, move, geniusAmmo, done);
break;
case "f":
if (ammo != 0)
{
Console.Write("\nYou have fired, press enter for Genius\n");
ammo--;
Console.Write("Your ammo is " + ammo);
Console.ReadLine();
Genius(geniusMove, move, geniusAmmo, done);
}
else
{
Console.Write("You don't have enough ammo, try again");
done = false;
}
break;
default:
Console.Write("\nInvalid move, try again\n");
done = false;
break;
}
Console.ReadLine();
}
return move;
}
else
{
return move;
}
}
public static string Genius(string geniusMove, string move, int geniusAmmo, bool done)
{
Random RandomNumber = new Random();
int x = RandomNumber.Next(0,3);
if (x == 0)
{
geniusMove = "f";
geniusAmmo--;
Console.Write("Genius had decided to fire.\nGenius ammo is " + geniusAmmo + "\n");
TestMoves(move, geniusMove);
}
else if (x == 1)
{
geniusMove = "r";
geniusAmmo++;
Console.Write("Genius had decided to reload.\nGenius ammo is " + geniusAmmo + "\n");
TestMoves(move, geniusMove);
}
else if (x == 2)
{
geniusMove = "s";
Console.Write("Genius had decided to shield.\nGenius ammo is " + geniusAmmo + "\n");
TestMoves(move, geniusMove);
}
return geniusMove;
}
public static void TestMoves(string move, string geniusMove)
{
bool done = false;
if (move == "s" && geniusMove == "f")
{
Console.Write("Nice shield, no one has died yet");
EndLoop(move, geniusMove, done);
}
else if (move == "f" && geniusMove == "f")
{
Console.Write("You both died! Good game!");
EndLoop(move, geniusMove, done);
}
else if (move == "r" && geniusMove == "f")
{
Console.Write("No shield!? You died! Good game!");
EndLoop(move, geniusMove, done);
}
else if (move == "f" && geniusMove == "s")
{
Console.Write("Genius is too good, no one has died yet");
EndLoop(move, geniusMove, done);
}
else if (move == "f" && geniusMove != "s")
{
Console.Write("Genius let his guard down! Good game!");
EndLoop(move, geniusMove, done);
}
else if (move != "f" && geniusMove != "f")
{
Console.Write("Keep playing it safe.");
EndLoop(move, geniusMove, done);
}
else
{
EndLoop(move, geniusMove, done);
}
}
public static bool EndLoop(string move, string geniusMove, bool done)
{
if (move == "s" && geniusMove == "f")
{
done = false;
Console.Write(move + geniusMove + done);
return done;
}
else if (move == "s" && geniusMove == "r")
{
done = false;
Console.Write(move + geniusMove + done);
return done;
}
else if (move == "s" && geniusMove == "s")
{
done = false;
Console.Write(move + geniusMove + done);
return done;
}
else if (move == "r" && geniusMove == "f")
{
done = true;
Console.Write(move + geniusMove + done);
return done;
}
else if (move == "r" && geniusMove == "r")
{
done = false;
Console.Write(move + geniusMove + done);
return done;
}
else if (move == "r" && geniusMove == "s")
{
done = false;
Console.Write(move + geniusMove + done);
return done;
}
else if (move == "f" && geniusMove == "f")
{
done = true;
Console.Write(move + geniusMove + done);
return done;
}
else if (move == "f" && geniusMove == "r")
{
done = true;
Console.Write(move + geniusMove + done);
return done;
}
else if (move == "f" && geniusMove == "s")
{
done = false;
Console.Write(move + geniusMove + done);
return done;
}
else
{
done = false;
Console.Write(move + geniusMove + done);
return done;
}
}
}
}
はなぜループで行わ戻すわざわざ?それは十分でなければなりません –
ああええ、大丈夫、良い点。 –
それでもまだ動作しません。 –