私のプロジェクトでは、私はビジュアルスタジオフォームで人生のゲームを構築しています。私が現在直面している問題は、クラスオブジェクトを初期化する場所がわからないため、他のフォームで値を変更できることです。別のフォームのクラスのインスタンス変数を変更する
これは私がボードゲームとプレイヤーの現在の統計情報を表示しています、私の基本フォームクラスである:
public partial class Life : Form
{
public Game game;
public Life()
{
game = new Game();
InitializeComponent();
}
private void Life_Load(object sender, EventArgs e)
{
Txt_BlueMoney.Text = game.player1.money.ToString();
Txt_RedMoney.Text = game.player2.money.ToString();
}
private void Btn_Start_Click(object sender, EventArgs e)
{
StartGame sg = new StartGame();
sg.Show();
}
}
マイゲームのクラスは他のクラスのインスタンスが含まれているだけのクラスです:
public class Game
{
public Board board;
public BoardSpaceEvent boardEvent;
public Player player1;
public Player player2;
public Game()
: base()
{
board = new Board();
boardEvent = new BoardSpaceEvent();
player1 = new Player();
player2 = new Player();
}
}
と、ここではそのすべての重要性のゲームをする場合には初期化されたクラスのうちの一つの例である:
public class Player : BoardSpaceEvent
{
// might need to add getter and setter to access these variables
public bool endOfTurn;
public int currentSpace;
public int numChildren;
public int money;
public int advanceSpaces;
public List<int> playerLifeCards;
public string career; // superstar, agent, teacher, athlete, salesperson, doctor, accountant, artist, police
public int salary;
public int taxes;
public bool autoInsurance;
public bool houseInsurance;
public Player()
: base()
{
endOfTurn = false; // might need to switch this
currentSpace = 0;
money = 10000; // will have to change this to whatever you start with
numChildren = 0;
advanceSpaces = 0; // make sure to pass this as reference
playerLifeCards = new List<int> { };
career = "";
salary = 0;
taxes = 0;
autoInsurance = false;
houseInsurance = false;
}
}
今私がしようとしているのは、ユーザーが2つのボタンの間で選択しなければならない別のフォームを開き、これらのボタンのそれぞれがクラスインスタンス変数を変更することです。これを行う最善の方法は何ですか?ここでは(私のコメントは、私が何をしたいのかを示して)私がこれまで持っているものです。
public partial class StartGame : Form
{
public StartGame()
{
InitializeComponent();
}
private void Btn_College_Click(object sender, EventArgs e)
{
MessageBox.Show("You've chosen college");
// this is where I want to update a players money variable in the Player class
this.Close();
}
private void Btn_Job_Click(object sender, EventArgs e)
{
MessageBox.Show("You've chosen job");
}
}
私は参照として渡す試してみましたが、それは動作しませんでした。たぶん私は間違っていた。私もメインフォームから継承しようとしましたが、その問題は背景も継承されていることです。私は静的なインスタンスを使用するように見てきましたが、この悪い習慣ではありませんか?前もって感謝します!
をスパムではない言語タグを行ってください。 – molbdnilo
"私は参照として渡すことを試みたが、それはうまくいかなかった。"私はあなたが参照を渡そうとするところにコードを見ません。何が間違っていたのですか?あなたのコンパイラは代わりにスープを作るかコード実行をしましたか? ;) –