Dart Scoring Game с использованием С# Visual Studio 2010 - чередующий счет игрока после evey 3-й балл

Просто купил мишень и подумал создать небольшое приложение для подсчета очков, до сих пор я создал имена игроков и отдельные кнопки, чтобы начать игру. три игры - 301, 501 и 1001, это целевые баллы, чтобы добраться до нуля, бросая три дротика каждый поочередно двумя игроками. Я включил много кнопок для оценки каждого дротика от 20 до 1, каждый для одиночного, двойного, тройного, быка, внешнего быка и кнопки без очков. Как только игры начинаются, первые три нажатия кнопок должны быть отнесены к игроку один, а затем следующие три кнопки нажаты, чтобы выделить соответствующий счет игроку 2. Игры заканчиваются побеждающим игроком, который достигает целевого показателя (или уменьшает его до нуля).

У меня могла быть кнопка выбора игрока, чтобы сделать это, но после нескольких советов на пути кодирования альтернативного шаблона подсчета была автоматической.

Любая помощь очень ценится. спасибо

namespace dbstats
{
 public partial class Form1 : Form
 {
 public Form1()
 {
 InitializeComponent();

 btnPlay.Visible = false;
 btnReset.Visible = false;
 btnUndo.Visible = false;
 gbDartBoard.Visible = false;
 gbScoreBoard.Visible = false;
 lbP1Select.Visible = false;;
 lbP2Select.Visible = false;
 cmbP1.Visible = false;
 cmbP2.Visible = false;

 string[] lines = File.ReadAllLines(@"playerStats.csv");
 foreach (var line in lines) 
 {
 string[] names = line.Split(',');
 if (names[0] != "NAME")
 {
 cmbP1.Items.Add(names[0]);
 cmbP2.Items.Add(names[0]);
 } 
 }
 }

 private void tsm301_Click(object sender, EventArgs e)
 {
 lbP1Select.Visible = true;
 cmbP1.Visible = true;
 lbP2Select.Visible = true;
 cmbP2.Visible = true;
 btnPlay.Visible = true;
 tbPlayer1.Text = "301";
 tbPlayer2.Text = "301";

 gamesToolStripMenuItem.Visible = false;
 manageToolStripMenuItem.Visible = false;
 }

 private void btnPlay_Click(object sender, EventArgs e)
 {
 if (cmbP1.SelectedItem == cmbP2.SelectedItem || cmbP1.SelectedItem == null || cmbP2.SelectedItem == null)
 {
 MessageBox.Show("Make Sure:" + "\n\n"
 + "The Players are NOT the same." + "\n"
 + "&" + "\n"
 + "At least one selection is NOT left blank", "Choose Again!");
 }
 else
 {
 lbP1Select.Visible = false;
 cmbP1.Visible = false;
 lbP2Select.Visible = false;
 cmbP2.Visible = false;
 btnPlay.Visible = false;

 lbPlayer1.Text = cmbP1.SelectedItem.ToString();
 lbPlayer2.Text = cmbP2.SelectedItem.ToString();

 btnReset.Visible = true;
 btnUndo.Visible = true;
 gbDartBoard.Visible = true;
 gbScoreBoard.Visible = true;
 lbPlayer1.Visible = true; ;
 lbPlayer2.Visible = true; 
 }
 }
}
1 ответ

Храните turnsEntered члена turnsEntered в любом классе, управляя поворотами/подсчетами.

// Call after every time a new score is entered. Start at 0.
turnsEntered++;
if (turnsEntered % 3 == 0)
{
 SwitchPlayer(); // However you keep track of current player - switch here
}

После того, как введен 3-й балл, он переключит игроков... после того, как еще 3 он снова переключится и т.д....

Вы можете позже проверить turnsEntered чтобы определить, когда игра окончена. Установите его на ноль, когда вы повторно инициализируете новую игру.

licensed under cc by-sa 3.0 with attribution.