Computer Science Canada Programming C, C++, Java, PHP, Ruby, Turing, VB   Username:   Password: Wiki   Blog   Search   Turing   Chat Room  Members
risk dice problem
Author Message
aliveiswell

Posted: Fri Jan 23, 2004 5:38 pm   Post subject: risk dice problem

i was making this so my friends and i could skip the difficult process of throwing dice while playing risk, but it sometimes does not work. when you click on number of dice, it sometimes does not find the right amount of random numbers for the number of dice you chose (you'll see if im not making sense). could anyone help me with this problem

the code:
 code: % die var die : array 1 .. 6 of int % attack/defend variables var attackDie : int var defendDie : int var counter1 : int := 0 var attack : array 1 .. 3 of int := init (0, 0, 0) var defend : array 1 .. 2 of int := init (0, 0) % mouse variables var mouseX, mouseY, onOff : int var void : string (1) % dice pictures drawfillbox (220, 200, 270, 250, brightred)     % 1 dice drawfilloval (245, 225, 5, 5, white)     % middle circle drawfillbox (290, 200, 340, 250, brightred)     % 2 dice drawfilloval (331, 210, 5, 5, white)     % top left circle drawfilloval (300, 240, 5, 5, white)     % bottom left circle drawfillbox (360, 200, 410, 250, brightred)     % 3 dice drawfilloval (370, 240, 5, 5, white)     % top left circle drawfilloval (401, 210, 5, 5, white)     % bottom right circle drawfilloval (385, 225, 5, 5, white)     % middle circle drawfillbox (430, 200, 480, 250, brightred) drawfilloval (440, 240, 5, 5, white) drawfilloval (440, 210, 5, 5, white) drawfilloval (471, 240, 5, 5, white) drawfilloval (471, 210, 5, 5, white) drawfillbox (500, 200, 550, 250, brightred) drawfilloval (510, 240, 5, 5, white) drawfilloval (510, 210, 5, 5, white) drawfilloval (541, 240, 5, 5, white) drawfilloval (541, 210, 5, 5, white) drawfilloval (525, 225, 5, 5, white) drawfillbox (570, 200, 620, 250, brightred) drawfilloval (580, 240, 5, 5, white) drawfilloval (580, 210, 5, 5, white) drawfilloval (611, 240, 5, 5, white) drawfilloval (611, 210, 5, 5, white) drawfilloval (580, 225, 5, 5, white) drawfilloval (611, 225, 5, 5, white) die (1) := Pic.New (220, 200, 270, 250) die (2) := Pic.New (290, 200, 340, 250) die (3) := Pic.New (360, 200, 410, 250) die (4) := Pic.New (430, 200, 480, 250) die (5) := Pic.New (500, 200, 550, 250) die (6) := Pic.New (570, 200, 620, 250) % dice procedures proc decide     locate (8, 2)     put "Attacker: "     locate (14, 2)     put "Defender: "     if attack (1) = 1 then         Pic.Draw (die (1), 50, 200, picCopy)     elsif attack (1) = 2 then         Pic.Draw (die (2), 110, 200, picCopy)     elsif attack (1) = 3 then         Pic.Draw (die (3), 170, 200, picCopy)     elsif attack (1) = 4 then         Pic.Draw (die (4), 230, 200, picCopy)     elsif attack (1) = 5 then         Pic.Draw (die (5), 300, 200, picCopy)     elsif attack (1) = 6 then         Pic.Draw (die (6), 360, 200, picCopy)     end if     if attack (2) = 1 then         Pic.Draw (die (1), 50, 200, picCopy)     elsif attack (2) = 2 then         Pic.Draw (die (2), 110, 200, picCopy)     elsif attack (2) = 3 then         Pic.Draw (die (3), 170, 200, picCopy)     elsif attack (2) = 4 then         Pic.Draw (die (4), 230, 200, picCopy)     elsif attack (2) = 5 then         Pic.Draw (die (5), 300, 200, picCopy)     elsif attack (2) = 6 then         Pic.Draw (die (6), 360, 200, picCopy)     end if     if attack (3) = 1 then         Pic.Draw (die (1), 50, 200, picCopy)     elsif attack (3) = 2 then         Pic.Draw (die (2), 110, 200, picCopy)     elsif attack (3) = 3 then         Pic.Draw (die (3), 170, 200, picCopy)     elsif attack (3) = 4 then         Pic.Draw (die (4), 230, 200, picCopy)     elsif attack (3) = 5 then         Pic.Draw (die (5), 300, 200, picCopy)     elsif attack (3) = 6 then         Pic.Draw (die (6), 360, 200, picCopy)     end if     if defend (1) = 1 then         Pic.Draw (die (1), 50, 100, picCopy)     elsif defend (1) = 2 then         Pic.Draw (die (2), 110, 100, picCopy)     elsif defend (1) = 3 then         Pic.Draw (die (3), 170, 100, picCopy)     elsif defend (1) = 4 then         Pic.Draw (die (4), 230, 100, picCopy)     elsif defend (1) = 5 then         Pic.Draw (die (5), 300, 100, picCopy)     elsif defend (1) = 6 then         Pic.Draw (die (6), 360, 100, picCopy)     end if     if defend (2) = 1 then         Pic.Draw (die (1), 50, 100, picCopy)     elsif defend (2) = 2 then         Pic.Draw (die (2), 110, 100, picCopy)     elsif defend (2) = 3 then         Pic.Draw (die (3), 170, 100, picCopy)     elsif defend (2) = 4 then         Pic.Draw (die (4), 230, 100, picCopy)     elsif defend (2) = 5 then         Pic.Draw (die (5), 300, 100, picCopy)     elsif defend (2) = 6 then         Pic.Draw (die (6), 360, 100, picCopy)     end if end decide % misc procedures proc processingBar     for counter : 1 .. 190 by 5         drawfillbox (220, 35, 220 + counter, 30, brightred)         delay (25)     end for end processingBar proc logo     drawfillbox (0, 300, maxx, maxy, brightred)     locatexy (220, 351)     put "EHS Risk Roller by EHSoft"     for counter : 0 .. 21 by 2         drawbox (2 + counter, 299 + counter, maxx - counter, maxy - counter, brightred)     end for     for counter : 1 .. 20 by 2         drawbox (2 + counter, 299 + counter, maxx - counter, maxy - counter, white)     end for end logo proc bodyBack     drawfillbox (5, 292, maxx - 5, 5, white) end bodyBack proc numberDiceAttack     % attacker     drawfillbox (220, 200, 270, 250, brightred)     % 1 dice     drawfilloval (245, 225, 5, 5, white)     % middle circle     drawfillbox (290, 200, 340, 250, brightred)     % 2 dice     drawfilloval (331, 210, 5, 5, white)     % top left circle     drawfilloval (300, 240, 5, 5, white)     % bottom left circle     drawfillbox (360, 200, 410, 250, brightred)     % 3 dice     drawfilloval (370, 240, 5, 5, white)     % top left circle     drawfilloval (401, 210, 5, 5, white)     % bottom right circle     drawfilloval (385, 225, 5, 5, white)     % middle circle end numberDiceAttack proc numberDiceDefend     % defender     drawfillbox (220, 85, 270, 135, brightred)     % 1 dice     drawfilloval (245, 110, 5, 5, white)     % middle circle     drawfillbox (290, 85, 340, 135, brightred)     % 2 dice     drawfilloval (331, 95, 5, 5, white)     % top left circle     drawfilloval (300, 125, 5, 5, white)     % bottom left circle end numberDiceDefend proc whiteColumn     drawfillbox (634, 287, 631, 5, white) end whiteColumn setscreen ("nocursor") colorback (brightred) color (white) cls logo bodyBack loop     numberDiceAttack     locate (8, 2)     put "                     How many dice is the attacker using?"     whiteColumn     loop         mousewhere (mouseX, mouseY, onOff)         if onOff = 1 then             if mouseX > 220 and mouseX < 270 and mouseY > 200 and mouseY < 250 then                 attackDie := 1                 exit             elsif mouseX > 290 and mouseX < 340 and mouseY > 200 and mouseY < 250 then                 attackDie := 2                 exit             elsif mouseX > 360 and mouseX < 410 and mouseY > 200 and mouseY < 250 then                 attackDie := 3                 exit             end if         end if     end loop     locate (9, 2)     put "                                    ::", attackDie, "::"     numberDiceDefend     locate (15, 2)     put "                     How many dice is the defender using?"     whiteColumn     loop         mousewhere (mouseX, mouseY, onOff)         if onOff = 1 then             if mouseX > 220 and mouseX < 270 and mouseY > 85 and mouseY < 135 then                 defendDie := 1                 exit             elsif mouseX > 290 and mouseX < 340 and mouseY > 85 and mouseY < 135 then                 defendDie := 2                 exit             end if         end if     end loop     locate (16, 2)     put "                                    ::", defendDie, "::"     whiteColumn     locate (22, 2)     put "                                 Processing..."     whiteColumn     processingBar     delay (500)     bodyBack     if attackDie = 1 and defendDie = 1 then         randint (attack (1), 1, 6)         randint (defend (1), 1, 6)         decide     elsif attackDie = 1 and defendDie = 2 then         randint (attack (1), 1, 6)         randint (defend (1), 1, 6)         randint (defend (2), 1, 6)         decide     elsif attackDie = 2 and defendDie = 1 then         randint (attack (1), 1, 6)         randint (attack (2), 1, 6)         randint (defend (1), 1, 6)         decide     elsif attackDie = 2 and defendDie = 2 then         randint (attack (1), 1, 6)         randint (attack (2), 1, 6)         randint (defend (1), 1, 6)         randint (defend (2), 1, 6)         decide     elsif attackDie = 3 and defendDie = 1 then         randint (attack (1), 1, 6)         randint (attack (2), 1, 6)         randint (attack (3), 1, 6)         randint (defend (1), 1, 6)         decide     elsif attackDie = 3 and defendDie = 2 then         randint (attack (1), 1, 6)         randint (attack (2), 1, 6)         randint (attack (3), 1, 6)         randint (defend (1), 1, 6)         randint (defend (2), 1, 6)         decide     end if     attack (1) := 0     attack (2) := 0     attack (3) := 0     defend (1) := 0     defend (2) := 0     loop         mousewhere (mouseX, mouseY, onOff)         if onOff = 1 then             if mouseX > 0 and mouseY > 0 then                 exit             end if         end if     end loop     bodyBack end loop

Cervantes

Posted: Fri Jan 23, 2004 5:48 pm   Post subject: (No subject)

*ward off!!*

but seriously, I would first suggest that you clean up that code, as it appears to be very long and could be done more efficiently.

as for fixing your problem, I haven't taken much of a look at the code but I think that it is probably just a simple mistake that you can fix easily as soon as you find it. (that's the major reason why I suggest cleaning up that code)
shorthair

Posted: Fri Jan 23, 2004 6:31 pm   Post subject: (No subject)

i just copied and pasted the code , but how the heck did you waste all that code jsut to make some dice on the screen , this code is really messy , AND theres a loading bar , you need to smarten up mister , as befoer if you want a real loading bar i will make one for you , same rules for everyone else , its 20 bits a bar , i jsut need your code and 1 day , and its done
Cervantes

Posted: Fri Jan 23, 2004 9:01 pm   Post subject: (No subject)

 code: Draw.FillBox (1,1,50, 10, white) delay (2) Draw.FillBox (1,1,50,10,brightred)

kinda like that?
Andy

Posted: Fri Jan 23, 2004 9:02 pm   Post subject: (No subject)

ummm u know u can make them in paint, use a forloop to load them in and then use randint...
shorthair

Posted: Fri Jan 23, 2004 10:47 pm   Post subject: (No subject)

Im sorry but does no one here know how to read , i said " il make you a real loding bar " , not a fake one not a randomized one , one that actually takes as long as it does to load your files , mostly they goes instentainiously , but in a couple of my apps they take about 4 seconds
aliveiswell

Posted: Fri Jan 23, 2004 11:03 pm   Post subject: (No subject)

oh no ive disgraced myself... damn
i don't know how to clean it up, ive been turing for like 2 months and my class in one semester got to doing arrays, and half didn't know how to initialize them or whatever it's called.
McKenzie

Posted: Fri Jan 23, 2004 11:58 pm   Post subject: (No subject)

don't worry disgrace only lasts for about a day around here. The only truly disgracefull are the repeat/stupid flamers. You gave some context to your situation so you're OK.
As far as your code, in two months you'll be calling it a mess too. We all go through the same thing.

Cervantes

Posted: Sat Jan 24, 2004 11:30 am   Post subject: (No subject)

yeah but shorthair, we know you said a REAL loading bar, but in effect (at least on my comp) all it would do is go from 0% to 100% in 2 milliseconds.
probably less
shorthair

Posted: Sat Jan 24, 2004 11:42 am   Post subject: (No subject)

i also stated that, but once you get into reading and writing , and algorithms , you end actually seeing the bar load , im well aware that its instintanious for most apps , and that proves that you dont need one , ther emeant to show the user that the computer has not died and somthing is going on ,
Cervantes

Posted: Sat Jan 24, 2004 11:55 am   Post subject: (No subject)

pffft even if it takes four seconds.... thats fine. No one would ctrl alt del the program after 4 seconds...
 Display posts from previous: All Posts1 Day7 Days2 Weeks1 Month3 Months6 Months1 Year Oldest FirstNewest First

Page 1 of 1  [ 11 Posts ]
 Jump to:  Select a forum  CompSci.ca ------------ - Network News - General Discussion     General Forums   -----------------   - Hello World   - Featured Poll   - Contests     Contest Forums   -----------------   - DWITE   - [FP] Contest 2006/2008   - [FP] 2005/2006 Archive   - [FP] 2004/2005 Archive   - Off Topic     Lounges   ---------   - User Lounge   - VIP Lounge     Programming -------------- - General Programming     General Programming Forums   --------------------------------   - Functional Programming   - Logical Programming   - C     C   --   - C Help   - C Tutorials   - C Submissions   - C++     C++   ----   - C++ Help   - C++ Tutorials   - C++ Submissions   - Java     Java   -----   - Java Help   - Java Tutorials   - Java Submissions   - Ruby     Ruby   -----   - Ruby Help   - Ruby Tutorials   - Ruby Submissions   - Turing     Turing   --------   - Turing Help   - Turing Tutorials   - Turing Submissions   - PHP     PHP   ----   - PHP Help   - PHP Tutorials   - PHP Submissions   - Python     Python   --------   - Python Help   - Python Tutorials   - Python Submissions   - Visual Basic and Other Basics     VB   ---   - Visual Basic Help   - Visual Basic Tutorials   - Visual Basic Submissions     Education ----------- - Student Life   Graphics and Design ----------------------- - Web Design     Web Design Forums   ---------------------   - (X)HTML Help   - (X)HTML Tutorials   - Flash MX Help   - Flash MX Tutorials   - Graphics     Graphics Forums   ------------------   - Photoshop Tutorials   - The Showroom   - 2D Graphics   - 3D Graphics     Teams ------ - dTeam Public

 Style: Appalachia blueSilver eMJay subAppalachia subBlue subCanvas subEmjay subGrey subSilver subVereor Search: