the teacher gave us some input on how the game should be played... i have gotten all of my classes.. however in my card class.. the variable card :string.. gives no value in the procedure getCard aka returnCard... here is what i have so far.. can u try and help me out THANKS
Turing: | class Card
export setCard, returnSuit, returnValue, returnCard,
pointValue, toString, setSuit, printCard, Selected, getSelected
var value : int := 0
var card : string
var selected : boolean := false
procedure setCard (c : string)
card := c
end setCard
%-------------------------------------------------------------------
procedure Selected
selected := true
end Selected
function getSelected : boolean
result selected
end getSelected
%-------------------------------------------------------------------
function returnSuit : int
var suit : int
if index (card, "d") = 2 then
suit := 1
elsif index (card, "c") = 2 then
suit := 2
elsif index (card, "h") = 2 then
suit := 3
elsif index (card, "s") = 2 then
suit := 4
end if
result suit
end returnSuit
%-------------------------------------------------------------------
function returnValue : int
var cardValue : int
cardValue := (value mod 13) + 1
result cardValue
end returnValue
%-------------------------------------------------------------------
function pointValue : int
var number : int
var cardPoints : int
number := returnValue
if number = 1 then
cardPoints := 11
elsif number >= 11 and number <= 13 then
cardPoints := 10
else
cardPoints := number
end if
result cardPoints
end pointValue
%-------------------------------------------------------------------
function toString : string
var suit : char
var number : int
number := returnValue
suit := chr (returnSuit )
if number = 1 then
result "A " + suit
elsif number = 11 then
result "J " + suit
elsif number = 12 then
result "Q " + suit
elsif number = 13 then
result "K " + suit
else
result intstr (number ) + " " + suit
end if
end toString
function setSuit : int
var newSuit : string (1) := 'x'
var rank : string
var suit : int := 0
var card : string
put
"Choose a suit (d = diamonds, c = clubs, h = hearts, s = spades): "
..
loop
if hasch then
getch (newSuit )
case newSuit of
label 'd' :
card := card (1) + "d"
suit := returnSuit
label 'c' :
card := card (1) + "c"
suit := returnSuit
label 'h' :
card := card (1) + "h"
suit := returnSuit
label 's' :
card := card (1) + "s"
suit := returnSuit
label :
put ""
put "Invalid suit"
suit := 0
end case
end if
exit when suit not= 0
end loop
result suit
end setSuit
function returnCard : string
result card
end returnCard
%------------------------------------------------------------------------------------
procedure printCard (x, y : int, front : boolean)
var cardPic : int
if front then
case card of
label 'ad' :
Pic.ScreenLoad ("ad.bmp", 150, 0, picCopy)
label 'ac' :
Pic.ScreenLoad ("ac.bmp", 150, 0, picCopy)
label 'ah' :
Pic.ScreenLoad ("ah.bmp", 150, 0, picCopy)
label 'as' :
Pic.ScreenLoad ("as.bmp", 150, 0, picCopy)
label '2d' :
Pic.ScreenLoad ("2d.bmp", 150, 0, picCopy)
label '2c' :
Pic.ScreenLoad ("2c.bmp", 150, 0, picCopy)
label '2h' :
Pic.ScreenLoad ("2h.bmp", 150, 0, picCopy)
label '2s' :
Pic.ScreenLoad ("2s.bmp", 150, 0, picCopy)
label '3d' :
Pic.ScreenLoad ("3d.bmp", 150, 0, picCopy)
label '3c' :
Pic.ScreenLoad ("3c.bmp", 150, 0, picCopy)
label '3h' :
Pic.ScreenLoad ("3h.bmp", 150, 0, picCopy)
label '3s' :
Pic.ScreenLoad ("3s.bmp", 150, 0, picCopy)
label '4d' :
Pic.ScreenLoad ("4d.bmp", 150, 0, picCopy)
label '4c' :
Pic.ScreenLoad ("4c.bmp", 150, 0, picCopy)
label '4h' :
Pic.ScreenLoad ("4h.bmp", 150, 0, picCopy)
label '4s' :
Pic.ScreenLoad ("4s.bmp", 150, 0, picCopy)
label '5d' :
Pic.ScreenLoad ("5d.bmp", 150, 0, picCopy)
label '5c' :
Pic.ScreenLoad ("5c.bmp", 150, 0, picCopy)
label '5h' :
Pic.ScreenLoad ("5h.bmp", 150, 0, picCopy)
label '5s' :
Pic.ScreenLoad ("5s.bmp", 150, 0, picCopy)
label '6d' :
Pic.ScreenLoad ("6d.bmp", 150, 0, picCopy)
label '6c' :
Pic.ScreenLoad ("6c.bmp", 150, 0, picCopy)
label '6h' :
Pic.ScreenLoad ("6h.bmp", 150, 0, picCopy)
label '6s' :
Pic.ScreenLoad ("6s.bmp", 150, 0, picCopy)
label '7d' :
Pic.ScreenLoad ("7d.bmp", 150, 0, picCopy)
label '7c' :
Pic.ScreenLoad ("7c.bmp", 150, 0, picCopy)
label '7h' :
Pic.ScreenLoad ("7h.bmp", 150, 0, picCopy)
label '7s' :
Pic.ScreenLoad ("7s.bmp", 150, 0, picCopy)
label '8d' :
Pic.ScreenLoad ("8d.bmp", 150, 0, picCopy)
label '8c' :
Pic.ScreenLoad ("8c.bmp", 150, 0, picCopy)
label '8h' :
Pic.ScreenLoad ("8h.bmp", 150, 0, picCopy)
label '8s' :
Pic.ScreenLoad ("8s.bmp", 150, 0, picCopy)
label '9d' :
Pic.ScreenLoad ("9d.bmp", 150, 0, picCopy)
label '9c' :
Pic.ScreenLoad ("9c.bmp", 150, 0, picCopy)
label '9h' :
Pic.ScreenLoad ("9h.bmp", 150, 0, picCopy)
label '9s' :
Pic.ScreenLoad ("9s.bmp", 150, 0, picCopy)
label 'td' :
Pic.ScreenLoad ("10d.bmp", 150, 0, picCopy)
label 'tc' :
Pic.ScreenLoad ("10c.bmp", 150, 0, picCopy)
label 'th' :
Pic.ScreenLoad ("10h.bmp", 150, 0, picCopy)
label 'ts' :
Pic.ScreenLoad ("10s.bmp", 150, 0, picCopy)
label 'jd' :
Pic.ScreenLoad ("jd.bmp", 150, 0, picCopy)
label 'jc' :
Pic.ScreenLoad ("jc.bmp", 150, 0, picCopy)
label 'jh' :
Pic.ScreenLoad ("jh.bmp", 150, 0, picCopy)
label 'js' :
Pic.ScreenLoad ("js.bmp", 150, 0, picCopy)
label 'qd' :
Pic.ScreenLoad ("qd.bmp", 150, 0, picCopy)
label 'qc' :
Pic.ScreenLoad ("qc.bmp", 150, 0, picCopy)
label 'qh' :
Pic.ScreenLoad ("qh.bmp", 150, 0, picCopy)
label 'qs' :
Pic.ScreenLoad ("qs.bmp", 150, 0, picCopy)
label 'kd' :
Pic.ScreenLoad ("kd.bmp", 150, 0, picCopy)
label 'kc' :
Pic.ScreenLoad ("kc.bmp", 150, 0, picCopy)
label 'kh' :
Pic.ScreenLoad ("kh.bmp", 150, 0, picCopy)
label 'ks' :
Pic.ScreenLoad ("ks.bmp", 150, 0, picCopy)
end case
else
Pic.ScreenLoad ("b.bmp", 150, 0, picCopy)
end if
Pic.Draw (cardPic, x, y, picCopy)
Pic.Free (cardPic )
end printCard
end Card
%-----------------------------------------------------------------
class Deck
import Card
export emptyDeck, shuffleDeck, TopCard, initialize
var cards : array 1 .. 52 of ^Card
var size : int
var topCard : string
var p : int := 1
for i : 1 .. 52
new cards (i )
end for
procedure initialize
cards (1) -> setCard ('ad')
cards (2) -> setCard ('ac')
cards (3) -> setCard ('ah')
cards (4) -> setCard ('as')
cards (5) -> setCard ('2d')
cards (6) -> setCard ('2c')
cards (7) -> setCard ('2h')
cards (8) -> setCard ('2s')
cards (9) -> setCard ('3d')
cards (10) -> setCard ('3c')
cards (11) -> setCard ('3h')
cards (12) -> setCard ('3s')
cards (13) -> setCard ('4d')
cards (14) -> setCard ('4c')
cards (15) -> setCard ('4h')
cards (16) -> setCard ('4s')
cards (17) -> setCard ('5d')
cards (18) -> setCard ('5c')
cards (19) -> setCard ('5h')
cards (20) -> setCard ('5s')
cards (21) -> setCard ('6d')
cards (22) -> setCard ('6c')
cards (23) -> setCard ('6h')
cards (24) -> setCard ('6s')
cards (25) -> setCard ('7d')
cards (26) -> setCard ('7c')
cards (27) -> setCard ('7h')
cards (28) -> setCard ('7s')
cards (29) -> setCard ('8d')
cards (30) -> setCard ('8c')
cards (31) -> setCard ('8h')
cards (32) -> setCard ('8s')
cards (33) -> setCard ('9d')
cards (34) -> setCard ('9c')
cards (35) -> setCard ('9h')
cards (36) -> setCard ('9s')
cards (37) -> setCard ('td')
cards (38) -> setCard ('tc')
cards (39) -> setCard ('th')
cards (40) -> setCard ('ts')
cards (41) -> setCard ('jd')
cards (42) -> setCard ('jc')
cards (43) -> setCard ('jh')
cards (44) -> setCard ('js')
cards (45) -> setCard ('qd')
cards (46) -> setCard ('qc')
cards (47) -> setCard ('qh')
cards (48) -> setCard ('qs')
cards (49) -> setCard ('kd')
cards (50) -> setCard ('kc')
cards (51) -> setCard ('kh')
cards (52) -> setCard ('ks')
size := 52
end initialize
function emptyDeck : boolean
var numOfSelected : int := 0
var emptyD : boolean := false
for i : 1 .. 52
if cards (i ) -> getSelected = true then
numOfSelected := numOfSelected + 1
end if
end for
if numOfSelected = 52 then
emptyD := true
end if
result emptyD
end emptyDeck
procedure shuffleDeck
var a, b : int
var temp : ^Card
initialize
new temp
for i : 1 .. 52
randint (a, 1, 52)
randint (b, 1, 52)
temp -> setCard (cards (a ) -> returnCard )
cards (a ) -> setCard (cards (b ) -> returnCard )
cards (b ) -> setCard (temp -> returnCard )
end for
end shuffleDeck
function TopCard : ^Card
p := p + 1
if cards (p ) -> getSelected = false then
cards (p ) -> Selected
end if
result cards (p )
end TopCard
end Deck
%----------------------------------------------------------------------
class Hand
import Card, Mouse, Deck
export sort, print, setY, setHuman, add, useMouse, whatToPlay, remove,
emptyHand
var hand : array 1 .. 20 of ^Card
var size : int := 0
var x : int
var y : int := 20
var human : boolean := false
for i : 1 .. 20
new hand (i )
end for
procedure sort
var x : ^Card
for n : 1 .. size - 1
for a : 1 .. size
for b : 1 .. size
if hand (a ) -> pointValue > hand (b ) -> pointValue then
x -> setCard (hand (a ) -> returnCard )
hand (a ) -> setCard (hand (b ) -> returnCard )
hand (b ) -> setCard (x -> returnCard )
end if
end for
end for
end for
end sort
procedure add (newCard : ^Card )
var l : int
var n : string := newCard -> returnCard
size := size + 1
for decreasing i : size .. 1
hand (i ) -> setCard (n )
end for
hand (size ) -> setCard (n )
sort
end add
procedure remove (card : ^Card )
for i : 1 .. size
if hand (i ) -> returnCard = card -> returnCard then
hand (i ) := hand (i + 1)
end if
end for
size := size - 1
end remove
function emptyHand () : boolean
if size = 0 then
result true
else
result false
end if
end emptyHand
function whatToPlay (pileCard : ^Card ) : ^Card
var topC : ^Card
var tCd : ^Deck
var count : int := 1
var done : boolean := false
loop
if pileCard -> returnSuit = hand (count ) -> returnSuit then
done := true
result (hand (count ))
elsif pileCard -> pointValue = hand (count ) -> pointValue then
done := true
result (hand (count ))
elsif count > size then
done := true
result pileCard
end if
count := count + 1
exit when done = true
end loop
end whatToPlay
function okayToPlay (pile : ^Card, card : ^Card ) : boolean
if card -> pointValue = pile -> pointValue or card -> returnSuit =
pile -> returnSuit
then
result true
else
result false
end if
end okayToPlay
procedure setY (num : int)
y := num
end setY
procedure print
x := 0
hand (1) -> printCard (x, y, human )
for i : 2 .. size
x := x + 20
hand (i ) -> printCard (x, y, human )
end for
end print
procedure setHuman (h : boolean)
human := h
end setHuman
function useMouse (pile : ^Card ) : ^Card
var buttonnumber, buttonupdown, i : int
var temp : ^Card
var tc : string
loop
if whatToPlay (pile ) = pile then
result pile
else
Mouse.ButtonWait ("down", x, y, buttonnumber,
buttonupdown )
if y > 100 and x < 20 then
i := 1
elsif y > 100 and 20 <= x and x < 40 then
i := 2
end if
if (okayToPlay (pile, hand (i ))) then
temp -> setCard (hand (i ) -> returnCard )
remove (hand (i ))
result temp
else
result pile
end if
end if
end loop
end useMouse
end Hand
%-----------------------------------------------------------------------------------------
class Game
import Deck, Card, Hand
export play1
var player : array 1 .. 4 of ^Hand
var playerName : array 1 .. 4 of string
var deck : ^Deck
var pile : ^Card
new deck
for i : 1 .. 4
new player (i )
end for
player (1) -> setY (20)
player (2) -> setY (100)
player (3) -> setY (180)
player (4) -> setY (260)
player (1) -> setHuman (true)
playerName (1) := "player 1"
playerName (2) := "Bob"
playerName (3) := "Sam"
playerName (4) := "Jen"
new pile
procedure reDraw ()
cls
for i : 1 .. 4
if i = 1 then
player (i ) -> print
else
end if
end for
pile -> printCard (150, 20, true)
end reDraw
procedure deal ()
for i : 1 .. 4
for j : 1 .. 8
player (i ) -> add (deck -> TopCard )
player (i ) -> print
end for
end for
deck -> shuffleDeck
end deal
procedure play1 ()
var playr : int := 1
var card : ^Card
new card
deal
loop
if playr = 1 then
card := player (playr ) -> useMouse (pile )
else
card := player (playr ) -> whatToPlay (pile )
end if
if card = pile then
player (playr ) -> add (deck -> TopCard )
else
player (playr ) -> remove (card )
pile := card
end if
exit when player (playr ) -> emptyHand ()
playr := playr mod 4 + 1
end loop
end play1
end Game
var w : int
var eD : boolean
var C : ^Card
var D : ^Deck
var H : ^Hand
var G : ^Game
new C
new D
new H
new G
w := Window.Open ("position:center, graphics:600;600")
G -> play1 |
Mod Edit: Remember to use syntax tags! Thanks code: | [syntax="turing"]Code Here[/syntax] |
|