memory card game help
Author |
Message |
noname96
|
Posted: Sun Jan 20, 2013 1:03 pm Post subject: memory card game help |
|
|
hi, i'm new to the forums:) i'm making a concentration matching card game.The game will show 16 cards(4 by 4), and 8 different pictures. the user will click on two cards,and if they match they stay flipped over. if they don't, they return to their face down position. how do i make the pictures appear in different positions each time i run the program? also, how do i make it so you can only flip two cards at a time? Ive added 5 of the pictures as attachments, however it wont allow me to add all 8. the ones i didnt include were PEAR.jpg, APPLE.jpg, and BANANA.jpg. Help MUCH appreciated. Thank you
setscreen ("graphics:1201;601;cursor;nobuttonbar")
View.Set ("offscreenonly")
var picID : int
Draw.FillBox (0, 1, 1203, 600, 7)
var temp : int := Rand.Int (1, 16)
var stream : int
var word : string
var select : array 1 .. 4, 1 .. 4 of boolean
var pic : array 1 .. 16 of int
var X : int
var Y : int
var X2 : int
var Y2 : int
for r : 1 .. 4
for c : 1 .. 4
select (r, c) := true
end for
end for
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%randomizing picture array%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
pic (1) := Pic.FileNew ("ORANGE.jpg")
pic (2) := Pic.FileNew ("WATERMELON.jpg")
pic (3) := Pic.FileNew ("STRAWBERRIES.jpg")
pic (4) := Pic.FileNew ("PUMPKIN.jpg")
pic (5) := Pic.FileNew ("BANANA.jpg")
pic (6) := Pic.FileNew ("APPLE.jpg")
pic (7) := Pic.FileNew ("PEAR.jpg")
pic (8) := Pic.FileNew ("MANGO.jpg")
pic (9) := Pic.FileNew ("ORANGE.jpg")
pic (10) := Pic.FileNew ("WATERMELON.jpg")
pic (11) := Pic.FileNew ("STRAWBERRIES.jpg")
pic (12) := Pic.FileNew ("PUMPKIN.jpg")
pic (13) := Pic.FileNew ("BANANA.jpg")
pic (14) := Pic.FileNew ("APPLE.jpg")
pic (15) := Pic.FileNew ("PEAR.jpg")
pic (16) := Pic.FileNew ("MANGO.jpg")
for i : 1 .. 16
end for
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%FACE DOWN CARD%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
var counter : int := 0
var x, y, button : int
var click : boolean := true
procedure fill
var x2, x3, y2, y3 : int
y2 := 543
y3 := 420
for i : 1 .. 4
x2 := 30
x3 := 150
for j : 1 .. 4
if select (i, j) = true then
Draw.FillBox (x2, y2, x3, y3, red)
end if
if select (i, j) = false then
Draw.FillBox (x2, y2, x3, y3, white)
Pic.Draw (pic (temp), x2 + 1, y3 + 1, picCopy)
Draw.Box (x2, y2, x3, y3, 3)
end if
x2 += 130
x3 += 130
end for
y2 -= 130
y3 -= 130
end for
end fill
procedure find
var x2, y2 : int := 0
Mouse.Where (x, y, button)
for r : 1 .. 4
x2 := 0
for c : 1 .. 4
if x > 30 + x2 and x < 150 + x2 and y < 542 + y2 and y > 420 + y2 and button not= 0 then
select (r, c) := false
end if
x2 += 130
end for
y2 -= 130
end for
end find
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%mouse locate help%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
loop
Mouse.Where (x, y, button)
Text.Locate (1, 1)
if button = 0 then
put x : 4, " ", y : 4, " button up"
else
put x : 4, " ", y : 4, " button down"
end if
find
fill
View.Update
end loop
Description: |
|
Filesize: |
4.63 KB |
Viewed: |
3501 Time(s) |
![MANGO.jpg MANGO.jpg](uploads/attachments/mango_690.jpg)
|
Description: |
|
Filesize: |
3.78 KB |
Viewed: |
3502 Time(s) |
![ORANGE.jpg ORANGE.jpg](uploads/attachments/orange_182.jpg)
|
Description: |
|
Filesize: |
2.74 KB |
Viewed: |
3502 Time(s) |
![PUMPKIN.jpg PUMPKIN.jpg](uploads/attachments/pumpkin_578.jpg)
|
Description: |
|
Filesize: |
8.79 KB |
Viewed: |
3502 Time(s) |
![STRAWBERRIES.jpg STRAWBERRIES.jpg](uploads/attachments/strawberries_182.jpg)
|
Description: |
|
Filesize: |
3.09 KB |
Viewed: |
3502 Time(s) |
![WATERMELON.jpg WATERMELON.jpg](uploads/attachments/watermelon_816.jpg)
|
|
|
|
|
|
![](images/spacer.gif) |
Sponsor Sponsor
![Sponsor Sponsor](templates/subSilver/images/ranks/stars_rank5.gif)
|
|
![](images/spacer.gif) |
noname96
|
Posted: Sun Jan 20, 2013 6:44 pm Post subject: Re: memory card game help |
|
|
Oh, and to add, right now i get one random picture throughout all the cards when i run it each time. However, what i want is a DIFFERENT picture in each card randomly arranged.
EDIT: i guess ill add the remaining pictures here.
Description: |
|
Filesize: |
4.87 KB |
Viewed: |
3484 Time(s) |
![APPLE.jpg APPLE.jpg](uploads/attachments/apple_666.jpg)
|
Description: |
|
Filesize: |
1.13 KB |
Viewed: |
3484 Time(s) |
![Pear.jpg Pear.jpg](uploads/attachments/pear_126.jpg)
|
Description: |
|
Filesize: |
3.6 KB |
Viewed: |
3484 Time(s) |
![BANANA.jpg BANANA.jpg](uploads/attachments/banana_905.jpg)
|
|
|
|
|
|
![](images/spacer.gif) |
Tony
![](http://wiki.compsci.ca/images/f/f4/OniTony.gif)
|
Posted: Sun Jan 20, 2013 7:48 pm Post subject: Re: memory card game help |
|
|
noname96 @ Sun Jan 20, 2013 1:03 pm wrote:
var temp : int := Rand.Int (1, 16)
you seem to already know how to get random numbers.
|
Tony's programming blog. DWITE - a programming contest. |
|
|
|
![](images/spacer.gif) |
noname96
|
Posted: Sun Jan 20, 2013 9:08 pm Post subject: Re: memory card game help |
|
|
Yes, but i dont know how to translate these random numbers into pictures. i put:
temp:=Rand.Int(1,16)
%%%and then in my fill procedure%%%%
Pic.FileNew(pic(temp) x2,y3,PicCopy)
but all this does is put 1 random picture in all 16 cards. i want a random picture in each card.
|
|
|
|
|
![](images/spacer.gif) |
DemonWasp
|
Posted: Sun Jan 20, 2013 9:15 pm Post subject: Re: memory card game help |
|
|
noname96 @ Sun Jan 20, 2013 9:08 pm wrote: temp:=Rand.Int(1,16)
That will make temp hold a particular, single, random value. If you want different random values, you'll have to write code that uses Rand.Int repeatedly.
For example, this produces the same value 5 times:
Turing: |
var temp : int := Rand.Int ( 1, 100 )
for i : 1..5
put temp
end for
|
Whereas this produces 5 separately-random values (possibly the same, probably different):
Turing: |
for i : 1..5
put Rand.Int ( 1, 100 )
end for
|
|
|
|
|
|
![](images/spacer.gif) |
noname96
|
Posted: Sun Jan 20, 2013 9:25 pm Post subject: Re: memory card game help |
|
|
thanks, that last one makes sense! But how do i incorporate that into my code. i need to somehow put that into my 'fill' procedure by changing something in ---
Pic.Draw(pic(temp)x2,y3,PicCopy)
but what?
i would also need to make sure that the picture doesnt repeat itself, but one step at a time i guess
|
|
|
|
|
![](images/spacer.gif) |
Tony
![](http://wiki.compsci.ca/images/f/f4/OniTony.gif)
|
Posted: Mon Jan 21, 2013 1:15 am Post subject: RE:memory card game help |
|
|
Lets say that you've already decided which picture is what (using Rand.Int). For example, you have:
slot #1: picture 3
slot #2: picture 5
slot #3: picture 1
... etc.
What kind of a data structure can you use to easily look up what kind of picture you would need to draw in a specific slot?
The answer to that should lead towards the design of all the other parts (such as picking out the values).
|
Tony's programming blog. DWITE - a programming contest. |
|
|
|
![](images/spacer.gif) |
noname96
|
Posted: Mon Jan 21, 2013 12:29 pm Post subject: Re: memory card game help |
|
|
Alright, I got it to work thanks! But now I'm struggling to make it so that I can Only click two at a time. I tried putting a counter, and makin it add one evrytime you click, but that doesn't work for some reason...
|
|
|
|
|
![](images/spacer.gif) |
Sponsor Sponsor
![Sponsor Sponsor](templates/subSilver/images/ranks/stars_rank5.gif)
|
|
![](images/spacer.gif) |
Tony
![](http://wiki.compsci.ca/images/f/f4/OniTony.gif)
|
|
|
|
![](images/spacer.gif) |
noname96
|
Posted: Mon Jan 21, 2013 5:13 pm Post subject: Re: memory card game help |
|
|
the problem is that when i run it, the cards don't flip over. not even two.
this is how i coded it:
select(i,j):=false
clicktwo:=clicktwo+1
if clicktwo=2 then select(i,j):=true
if you read my code that i put in my original post youll see what select(i,j) does. basically if it is true, then the cards will be covered by a fillbox. if is false then the picture will show.
|
|
|
|
|
![](images/spacer.gif) |
|
|