質問

OOP論文のイントロのカードゲームで目が覚めています。ゲーム自体は仕様を満たしていますが、私は自分の満足と学習のためにそれで遊んでいます。

画像とそのランクとスイートを含むカードクラスがあります。 GUIでは、ピクチャボックスを使用して、それぞれのカード(デッキクラスのカード配列に格納されている)に格納されている画像を表示します。

cardPictureBox1.Image = card1.show();
cardPictureBox2.Image = card2.show();
cardPictureBox3.Image = card3.show();
...
etc

カードクラスにPictureBoxコントロールを継承させて、画面上に「実際に」表示されるようにすることは可能でしょうか。カードcalssのインスタンス(画像の値を保持するボックスではなく)は、他の関連情報を得るために跳躍する必要があるフープの量を劇的に削減します。

役に立ちましたか?

解決

Cardクラスを使用する代わりに、(UserControlから継承する代わりに)PictureBoxから継承するUserControl(CardまたはucCardなど)を作成できます。 C#でこれを行う最も簡単な方法は、希望する名前のUserControlを追加し、コードの先頭行を

から変更することです
public partial class ucCard : UserControl

to

public partial class ucCard : PictureBox

ucCardコントロールは、PictureBoxのすべてのプロパティ(カードのビットマップを保存するイメージを含む)を持ちます。プロジェクトをビルドすると、コンパイラーはAutoScaleModeを参照する行でbarfします。この行を削除して再構築するだけです。

その後、カードの前面と背面のスーツとランク、ビットマップなどのカードが必要とする追加のプロパティとメソッドを追加できます(背面はすべてのカードが共有できるように静的にすることができます)。 )前面画像と背面画像を切り替える方法。

OOPに関する限り、聖三位一体の忘れられた部分はカプセル化のようです。この場合、カードはユーザーが操作するUIの視覚的な要素であるため、カードをUserControlとしてカプセル化するのが最適です。既にお気づきのように、これによりアプリケーションがシンプルになり、生活が楽になります。

他のヒント

  

カードを作ることは可能でしょうか   クラスはPictureBoxを継承します   画面上にあるものを制御します   「実際に」カードのインスタンス   calss(保持するボックスではなく   それの画像値)   劇的にフープの量を減らす   に飛躍する必要があります   カードのその他の関連情報を取得します。

はい、でもよろしいですか?いいえ。ビジネスロジックとモデルをGUIレイヤーに緊密に結合します。

OOPに関する論文を執筆している場合は、プログラミングの習慣を身に付け、コーナーを切り抜けることを推奨します。モデルに変更を加えるたびにGUIが自動的に更新されるように、クイックMVCをホイップする方が良いでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top