How do I roulette with determined result

Get help using Construct 2

Post » Thu Jun 16, 2016 3:19 am

So i've been trying to implement a roulette with 8 sections and to make the roulette turn to the pre-defined result. (ex. if I enter 3, the roulette turns for 3 times and slows down in number 3). but I've been not able to make the roulette slow down AND land on 3. I tried roulette to slow down, but it slows down with a given negative acceleration.. and if I land on 3, it automatically stops at 3. Any idea how to implement these kind of game?
B
4
S
1
Posts: 7
Reputation: 314

Post » Thu Jun 16, 2016 4:16 pm

You can do it manually by controlling the angle and having a static rotation rate. Then just change the angle by the rotation rate every tick and when you want to slow it down, reduce the rotation rate every few seconds or so until it is 0. At that point you just need to fiddle with it until you initiate the slow down at the correct time.
https://www.ravenheart.ca/home
Company name changed to avoid Facebook-type shenanigans

"Someone once told me I bite off more than I can chew...

I told them I would rather choke on greatness than nibble on mediocrity."
B
22
S
6
G
1
Posts: 1,415
Reputation: 4,824

Post » Tue Nov 29, 2016 7:23 pm

Hey @sherlykim

I am also interested in this solution. Could you get this to work? I need to produce a roulette that stops in pre-defined places.
B
4
S
2
Posts: 125
Reputation: 850

Post » Wed Nov 30, 2016 2:33 pm

I'm no expert but here's how I would do it:

First of all, confirm that the physics engine is deterministic: If the initial angle, ball speed, roulette position and roulette rotation speed is the same, will it always lead to the same final result? Especially on different platforms? If so, then continue on. If not, then this solution won't work. I'm actually new to Construct 2 and don't know how its physics engine operates.

Having the program go on a continual loop of trying random ball angles, ball speeds and roulette starting positions; then marking down which number the ball ends up in. Leave this running for a few hours, and when you return, you'll have a list of initial settings tied with which end number they'll produce. This means that for every number on the roulette wheel you should have a couple of initial settings that you know will produce that number.

So now it's simple, whenever you want to produce a given number on the wheel, you just randomly choose one of the initial setting that you know will produce that number.

Just remember: Any changes to the physics engine may make you have to do the whole thing again. Also, double check that different platforms won't run the physics engine differently. Sometimes floating numbers are dealt with differently by platform.
B
2
Posts: 1
Reputation: 152

Post » Wed Nov 30, 2016 5:52 pm

Hey @Sofox. Thanks for the help but unfortunately it's very confuse to me. In my case, I am just wanting a simple roulette with 6 numbers only ("game of life" kind). so, I believe that the solution is much more simple than that.
B
4
S
2
Posts: 125
Reputation: 850

Post » Wed Nov 30, 2016 6:32 pm

Here's one way. Give your spinner Sprite a variable and call it 'speed'.

Then add this event:

Speed>0
--- add -50*dt to speed
--- rotate self.speed*dt degrees clockwise

That makes the spinner Sprite slow down. Now all that's left is to change the initial speed so it stops at a certain spot. The equation for that is:
Speed=sqrt(2*decceleration*distance)
In the event above deceleration is 50. So if you wanted the spinner to spin twice and land on 90 degrees you'd do this:

Start of layout
--- set speed to sqrt(2*50*(360*2+90))

Or in the case of always landing on one of six positions you could do:

On space pressed
Speed <= 0
--- set speed to sqrt(2*50*(360+int(random(6))*60))
B
92
S
32
G
107
Posts: 5,274
Reputation: 69,959

Post » Sun Dec 04, 2016 1:20 pm

Hey @R0J0hound

Sorry about the delay and thanks by the help.

I follow your instructions but something wrong happened. The spinner does not stop.

Some questions:

- I have to use the rotate behaviour, right?

- Need I to add or subtract "-50*dt"?
B
4
S
2
Posts: 125
Reputation: 850

Post » Mon Dec 05, 2016 1:44 am

It doesn't use a behavior at all. Here's a working example of the idea:
https://dl.dropboxusercontent.com/u/542 ... ette2.capx
B
92
S
32
G
107
Posts: 5,274
Reputation: 69,959

Post » Mon Dec 05, 2016 12:36 pm

Message: Braus can only post plain text URLS until they have 500 rep. 1 URLS modified. Why?
R0J0hound wrote:It doesn't use a behavior at all. Here's a working example of the idea:
https://dl.dropboxusercontent.com/u/542 ... ette2.capx



This is very cool. Thanks man. I fixed the first script and it works (with no behavior)

What I need to do if I want that spinner starts with more speed?

How I know when the spinner stop? I have checked and it stops with -0.(some numbers) of speed. Why it is not zero?

I need to manage the spinner to stop where I want. It starts in 0 and goes to 45/108/165/226/283/340 degrees.
B
4
S
2
Posts: 125
Reputation: 850

Post » Mon Dec 05, 2016 6:29 pm

You probably just want the spinner to slow down and when it stops just check if the angle is close to one of those.
For example here is an example if there are four values on the wheel:
Code: Select all
+-----------------+
| mouse: on click | spinner: set speed to random(100, 400)
+-----------------+

+------------------+
| spinner: speed>0 | spinner: subtract 100*dt from speed
|                  | spinner: rotate self.speed*dt degrees clockwise
+------------------+

+------------------+
| spinner: speed<0 | spinner: speed set speed to 0
+------------------+
   +---------------------------------------+
   | spinner: angle is 45 degrees from 0   | add 10 to score
   +---------------------------------------+
   +---------------------------------------+
   | spinner: angle is 45 degrees from 90  | add 50 to score
   +---------------------------------------+
   +---------------------------------------+
   | spinner: angle is 45 degrees from 180 | add 1337 to score
   +---------------------------------------+
   +---------------------------------------+
   | spinner: angle is 45 degrees from 270 | add 123456789 to score
   +---------------------------------------+


So in other words it's not necessary to know where it will stop beforehand, you just check the angle when it stops. There I checked the angle with the "is within angle" condition but the "is between angles" could be used too.


And in relation to your questions about my capx above:
To make it start with more speed just set the start speed higher in the click event.
The spinner is stopped when the speed is less than or equal to 0.
It's not zero because we can only calculate speed per frame, and seldom will the speed end on 0 at exactly the frame time, so it overshoots slightly.
B
92
S
32
G
107
Posts: 5,274
Reputation: 69,959

Next

Return to How do I....?

Who is online

Users browsing this forum: DharmaOne, Yahoo [Bot] and 6 guests