vb.net - How to display deck of cards and compare for doubles -
so.. right having pretty big problem. have pictures of card deck not displaying @ when deal button clicked. being displayed initially, tweaked , not.. there 3 players, test code player one. right set 16 cards, idea.
also, how compare check doubles , remove them discard pile? please help, beyond capabilities @ point , have no idea how proceed. thanks!!
deckofcardstest
public class deckofcardstest dim playercards integer = 16 dim playermatches integer dim comp1cards integer dim comp1matches integer dim comp2cards integer dim comp2matches integer private deck new deckofcards() ' create deck of cards private sub dealbutton_click(byval sender system.object, byval e system.eventargs) handles dealbutton.click discard1picturebox.visible = true deck.shuffle() ' shuffles deck dim card1 = deck.dealcard() card1picturebox.image = getcardimage(card1) dim card2 = deck.dealcard() card2picturebox.image = getcardimage(card2) dim card3 = deck.dealcard() card3picturebox.image = getcardimage(card3) dim card4 = deck.dealcard() card4picturebox.image = getcardimage(card4) dim card5 = deck.dealcard() card5picturebox.image = getcardimage(card5) dim card6 = deck.dealcard() card6picturebox.image = getcardimage(card6) dim card7 = deck.dealcard() card7picturebox.image = getcardimage(card7) dim card8 = deck.dealcard() card8picturebox.image = getcardimage(card8) dim card9 = deck.dealcard() card9picturebox.image = getcardimage(card9) dim card10 = deck.dealcard() card10picturebox.image = getcardimage(card10) dim card11 = deck.dealcard() card11picturebox.image = getcardimage(card11) dim card12 = deck.dealcard() card12picturebox.image = getcardimage(card12) dim card13 = deck.dealcard() card13picturebox.image = getcardimage(card13) dim card14 = deck.dealcard() card14picturebox.image = getcardimage(card14) dim card15 = deck.dealcard() card15picturebox.image = getcardimage(card15) dim card16 = deck.dealcard() card16picturebox.image = getcardimage(card16) lblplayercards.text = cstr(playercards) end sub ' dealbutton_click ' return image card argument private function getcardimage(byval card card) image if card isnot nothing ' retrieve specific card image resources dim pictureresource = my.resources.resourcemanager.getobject( card.tostring().replace(" ", "")) return ctype(pictureresource, image) ' return image else dealbutton.enabled = false ' disable deal button return nothing ' no more cards end if end function ' getcardimage private sub btnquick_click(byval sender system.object, byval e system.eventargs) handles btnquick.click discard1picturebox.visible = true deck.shuffle() ' shuffles deck dim card1 = deck.dealcard() card1picturebox.image = getcardimage(card1) dim card2 = deck.dealcard() card2picturebox.image = getcardimage(card2) messagebox.show("thank playing") dealbutton.enabled = false btnquick.enabled = false loop end sub end class ' deckofcardstest
card
public class card public enum cardvalue ace = 1 2 = 2 3 = 3 4 = 4 5 = 5 6 = 6 secen = 7 8 = 8 9 = 9 ten = 10 jack = 11 queen = 12 king = 13 end enum public enum cardsuit clubs spades hearts diamonds end enum public property value cardvalue public property suit cardsuit public sub new(byval value cardvalue, byval suit cardsuit) me.value = value me.suit = suit end sub end class
deckofcards
public class deckofcards private const number_of_cards integer = 52 ' number of cards private deck(number_of_cards - 1) card ' array of card objects private currentcard integer ' index of next card dealt private shared randomnumbers new random() ' random number generator ' constructor fills deck of cards public sub new() dim faces() string = {"ace", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "jack", "queen", "king"} dim suits() string = {"hearts", "diamonds", "clubs", "spades"} currentcard = 0 ' set currentcard first card dealt deck(0) dim deck(51) card dim cardposition integer = 0 'loop through each suit , each value in suit setting 1 of deck each suit card.cardsuit in [enum].getvalues(gettype(card.cardsuit)) each value card.cardvalue in [enum].getvalues(gettype(card.cardvalue)) deck(cardposition) = new card(value, suit) cardposition += 1 next next end sub ' new ' shuffle deck of cards simple one-pass algorithm public sub shuffle() ' after shuffling, dealing should start @ deck(0) again currentcard = 0 ' reinitialize currentcard ' each card, pick random card , swap them first = 0 deck.getupperbound(0) ' select random number between 0 , 51 dim second integer = randomnumbers.next(number_of_cards) ' swap current card randomly selected card dim temp card = deck(first) ' store copy of deck(first) deck(first) = deck(second) ' move deck(second) deck(first) deck(second) = temp ' move original deck(first) deck(second) next end sub ' shuffle ' deal 1 card public function dealcard() card ' determine whether cards remain dealt if currentcard <= deck.getupperbound(0) dim lastcard integer = currentcard ' store current card number currentcard += 1 ' increment current card number return deck(lastcard) else return nothing ' no more cards deal end if end function ' dealcard end class ' deckofcards
i can see in getcardimage
function, using card.tostring().replace(" ", "")
name of card image name resource.
since didn't provide how card images named in resource, i'll assume named follows:
club1 spade1 heart1 diamond1 --> aces of each suit club2 spade2 heart2 diamond2 --> two's of each suit . . . . . . . . . . . . club13 spade13 heart13 diamond13 --> kings of each suit
in general, each card named {suitname}{facevalue}.
inside card
class, add following overrides:
public overrides function tostring() string dim suit string = "" select case me.suit case cardsuit.clubs : suit = "club" case cardsuit.diamonds : suit = "diamond" case cardsuit.hearts : suit = "heart" case cardsuit.spades : suit = "spade" end select dim value string = cint(me.value).tostring return suit & value end function
inside getcardimage
function, name of card image using card.tostring()
, no need replace()
since formatted name in overrides above.
my code above solely based on assumption of how card images named in resource (ie. {suitname}{facevalue} format). if use different naming format, have modify overrides function return matching card image name each card suit/values.
Comments
Post a Comment