문제

나는 OOP 종이에 대한 소개를위한 카드 게임을 닦고 있습니다. 게임 자체는 사양을 충족하지만 이제는 내 자신의 만족감과 학습을 위해 그것을 가지고 놀고 있습니다.

나는 이미지, 그 순위 및 스위트를 포함하는 카드 클래스가 있습니다. GUI에서는 그림 상자를 사용하여 각 카드에 저장된 이미지를 표시합니다 (데크 클래스의 카드 배열에 저장).

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

카드 클래스를 PictueBox 컨트롤을 상속하는 것이 가능합니까? 따라서 화면의 내용은 "실제로"카드 Cals (이미지 값을 유지하는 상자가 아닌)의 인스턴스입니다. 후프는 다른 관련 정보를 카드를 얻기 위해 도약해야합니다.

도움이 되었습니까?

해결책

카드 클래스가있는 대신 usercontrol에서 상속하는 대신 PictureBox에서 상속되는 USERCONTROL (카드 또는 UCCARD 등)을 만들 수 있습니다. C# 에서이 작업을 수행하는 가장 쉬운 방법은 원하는 이름으로 USERCONTROL을 추가 한 다음 코드에서 상단 줄을 변경하는 것입니다.

public partial class ucCard : UserControl

에게

public partial class ucCard : PictureBox

UCCARD 컨트롤에는 PictureBox의 모든 속성이 있습니다 (이미지 포함, 여기서 카드의 비트 맵을 저장). 프로젝트를 구축 할 때 컴파일러는 자동 저칼로드를 참조하는 라인에서 BARF를 제공합니다.이 라인을 삭제하고 재 구축하십시오.

그런 다음 카드의 전면 및 뒷면에 대한 정장 및 순위 및 비트 맵과 같이 카드가 필요한 추가 속성 및 메소드를 추가 할 수 있습니다 (모든 카드가 공유 할 수 있도록 뒷면은 정적 일 수 있음), 아마도 flip () 메소드가 전면과 후면 이미지 사이를 전환합니다.

OOP가가는 한, 삼위 일체의 잊혀진 부분은 캡슐화 인 것 같습니다. 이 경우, 카드는 사용자와 상호 작용하는 UI의 시각적 요소이므로 USERControl로 캡슐화하는 것이 완벽합니다. 이미 알 수 있듯이 응용 프로그램을 더 간단하게하고 삶을 더 쉽게 할 수 있습니다.

다른 팁

카드 클래스를 PictueBox 컨트롤을 상속하는 것이 가능합니까? 따라서 화면의 내용은 "실제로"카드 Cals (이미지 값을 유지하는 상자가 아닌)의 인스턴스입니다. 후프는 다른 관련 정보를 카드를 얻기 위해 도약해야합니다.

예,하지만 원하십니까? 아닙니다. 비즈니스 로직과 모델을 GUI 계층에 매우 단단히 연결합니다.

OOP에 종이를 쓰고 있다면 좋은 프로그래밍 습관을 장려하고 절단 코너를 낙담시켜야합니다. 빠른 MVC를 채찍질하는 것이 좋습니다. 따라서 GUI가 모델을 변경할 때마다 자동으로 업데이트됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top