# If Statement Problem?

15 replies to this topic

### #1 Hyuji

Hyuji

Newbie

• Members
• 5 posts

• Calculators:
Casio fx-9750GII

Posted 05 February 2013 - 02:24 AM

I'm trying a paper scissors rock game on my calculator, just for fun, but I can't seem to get it to work properly. Whenever I try to execute it, I can get it to give me the numbers that the calculator randomly chooses, but I can't get it to say whether I win, lose, or get a tie.
This is my code:

```Lbl 0
"Paper=1, Scissors=2, Rock=3"?->A
Fix 0
2Ran# +1->B
If A/B=1/2
Then "LOSE"
Else If A/B=1/3
Then "WIN"
Else If A/B=2
Then "WIN"
Else If A/B=2/3
Then "LOSE"
Else If A/B=3
Then "LOSE"
Else If A/B=3/2
Then "WIN"
Else If A=B
Then "TIE"⊿
Goto 0
```

Here I'm saying that paper is 1, scissors is 2 and rock is 3, and if you pick 1 and it randomly picks 2, then you lose because A/B=1/2, and you chose paper while it chose scissors, so its supposed to say LOSE. I read on another thread about someone who had a whole bunch of if statements, too, and someone solved the problem by using strings. I took what he did and tried to use strings here, but I don't really understand them that much and so I'm not sure how to apply it here.

### #2 flyingfisch

flyingfisch

Casio Maniac

• Deputy
• 1891 posts
• Gender:Male
• Location:OH,USA
• Interests:Aviation, Skiing, Programming, Mountain Biking.

• Calculators:
fx-9860GII
fx-CG10 PRIZM

Posted 05 February 2013 - 03:47 AM

I think your problem is that the `if` statement should end with an `IfEnd` command.

So like this:

```Lbl 0
"Paper=1, Scissors=2, Rock=3"?->A
Fix 0
2Ran# +1->B
If A/B=1/2
Then "LOSE"
Else If A/B=1/3
Then "WIN"
Else If A/B=2
Then "WIN"
Else If A/B=2/3
Then "LOSE"
Else If A/B=3
Then "LOSE"
Else If A/B=3/2
Then "WIN"
Else If A=B
Then "TIE"⊿
'My added line below (BTW, this is a comment in casio basic)
IfEnd
Goto 0
```

### #3 Hyuji

Hyuji

Newbie

• Members
• 5 posts

• Calculators:
Casio fx-9750GII

Posted 05 February 2013 - 09:08 AM

I knew I would've forgotten something, but when I tried it didn't change anything.

### #4 naib864

naib864

Casio Technician

• Members
• 316 posts
• Gender:Male
• Location:Behind the Moon :D
• Interests:Programming, Minecraft

• Calculators:
fx-9860GII

Posted 05 February 2013 - 01:21 PM

Try this:

```Lbl 0
"Paper=1, Scissors=2, Rock=3"?->A
Fix 0
2Ran# +1->B
If A/B=1/2
Then "LOSE"
Else If A/B=1/3
Then "WIN"
Else If A/B=2
Then "WIN"
Else If A/B=2/3
Then "LOSE"
Else If A/B=3
Then "LOSE"
Else If A/B=3/2
Then "WIN"
Else If A=B
Then "TIE"
IfEnd
IfEnd
IfEnd
IfEnd
IfEnd
IfEnd
IfEnd
Goto 0
```
Every If-command needs an IfEnd.

### #5 flyingfisch

flyingfisch

Casio Maniac

• Deputy
• 1891 posts
• Gender:Male
• Location:OH,USA
• Interests:Aviation, Skiing, Programming, Mountain Biking.

• Calculators:
fx-9860GII
fx-CG10 PRIZM

Posted 05 February 2013 - 05:40 PM

Every If-command needs an IfEnd.

Ah, yes, I forgot that casio-BASIC doesn't have an `ElseIf` command.

### #6 MicroPro

MicroPro

Casio Overlord

• Deputy
• 640 posts
• Gender:Male
• Location:Iran

• Calculators:

Posted 05 February 2013 - 05:51 PM

Ah, yes, I forgot that casio-BASIC doesn't have an `ElseIf` command.

How limiting... It's strange because CP does have it.

`Switch` seems a better alternative here.

Edited by MicroPro, 05 February 2013 - 05:56 PM.

### #7 Casimo

Casimo

Casio Overlord

• Members
• 641 posts
• Gender:Not Telling

Posted 05 February 2013 - 05:58 PM

There is no switch on the fx9860

### #8 MicroPro

MicroPro

Casio Overlord

• Deputy
• 640 posts
• Gender:Male
• Location:Iran

• Calculators:

Posted 05 February 2013 - 06:06 PM

There is no switch on the fx9860

How more limiting... At least in this specific program look-up tables can be used. (luckily )

### #9 flyingfisch

flyingfisch

Casio Maniac

• Deputy
• 1891 posts
• Gender:Male
• Location:OH,USA
• Interests:Aviation, Skiing, Programming, Mountain Biking.

• Calculators:
fx-9860GII
fx-CG10 PRIZM

Posted 05 February 2013 - 06:10 PM

just for the record, lua doesn't have a switch-case function either...

### #10 MicroPro

MicroPro

Casio Overlord

• Deputy
• 640 posts
• Gender:Male
• Location:Iran

• Calculators:

Posted 05 February 2013 - 06:18 PM

Because it doesn't require multiple `end`s. Some variations even add the `elif` keyword (instead of the lengthy `elseif` keyword) to make if-then-else ladders as short as switch statements.

### #11 flyingfisch

flyingfisch

Casio Maniac

• Deputy
• 1891 posts
• Gender:Male
• Location:OH,USA
• Interests:Aviation, Skiing, Programming, Mountain Biking.

• Calculators:
fx-9860GII
fx-CG10 PRIZM

Posted 05 February 2013 - 07:12 PM

also, to optimize this program, the use of the `=>` command may help.

usage:

`statement => command if statement is true`

so, this code

```If A/B=1/2
Then "LOSE"

```

can be changed to
```A/B=1/2 => "LOSE"
```

Hope that helps
• MicroPro likes this

### #12 Hyuji

Hyuji

Newbie

• Members
• 5 posts

• Calculators:
Casio fx-9750GII

Posted 06 February 2013 - 01:36 AM

Adding in the rest of the `IfEnd`'s did manage to get the `Goto 0` to work, but it still won't say whether I win, lose, or get a tie. I tried using the double arrow instead of if statements but it didn't work, just kept returning 0.

### #13 flyingfisch

flyingfisch

Casio Maniac

• Deputy
• 1891 posts
• Gender:Male
• Location:OH,USA
• Interests:Aviation, Skiing, Programming, Mountain Biking.

• Calculators:
fx-9860GII
fx-CG10 PRIZM

Posted 06 February 2013 - 02:14 AM

`Ran#` produces a number from .0 to 1.0.

Maybe `RanInt()` is better?

### #14 Hyuji

Hyuji

Newbie

• Members
• 5 posts

• Calculators:
Casio fx-9750GII

Posted 06 February 2013 - 02:21 AM

Of course! The `Fix 0` only displays it as an integer, but it's still technically a decimal. I should've thought of that. It finally works now, thank you!

### #15 flyingfisch

flyingfisch

Casio Maniac

• Deputy
• 1891 posts
• Gender:Male
• Location:OH,USA
• Interests:Aviation, Skiing, Programming, Mountain Biking.

• Calculators:
fx-9860GII
fx-CG10 PRIZM

Posted 06 February 2013 - 02:25 AM

no problem!

### #16 2MB26

2MB26

Newbie

• Members
• 2 posts

• Calculators:
fx9750gii Casio Graphical Calculator

Posted 18 November 2016 - 12:03 PM

I'm trying a paper scissors rock game on my calculator, just for fun, but I can't seem to get it to work properly. Whenever I try to execute it, I can get it to give me the numbers that the calculator randomly chooses, but I can't get it to say whether I win, lose, or get a tie.
This is my code:

```Lbl 0
"Paper=1, Scissors=2, Rock=3"?->A
Fix 0
2Ran# +1->B
If A/B=1/2
Then "LOSE"
Else If A/B=1/3
Then "WIN"
Else If A/B=2
Then "WIN"
Else If A/B=2/3
Then "LOSE"
Else If A/B=3
Then "LOSE"
Else If A/B=3/2
Then "WIN"
Else If A=B
Then "TIE"⊿
Goto 0
```
Here I'm saying that paper is 1, scissors is 2 and rock is 3, and if you pick 1 and it randomly picks 2, then you lose because A/B=1/2, and you chose paper while it chose scissors, so its supposed to say LOSE. I read on another thread about someone who had a whole bunch of if statements, too, and someone solved the problem by using strings. I took what he did and tried to use strings here, but I don't really understand them that much and so I'm not sure how to apply it here.

Hi, I used this code (plus all the fixes you got) and I've added a lot to it so now it offers single/multi player and asks if you want to play again amongst other things

I've attached the skeleton code if you anyone wants to use it

Any advice on what I can improve etc. would be welcome!

Lbl 0

"SINGLE PLAYER = 1"

"MULTIPLAYER = 2"

? -> Y:

If (Y≠1 And Y≠2)

Then "ERROR"

GoTo 0

IfENd

If(Y=1)

Then Lbl 1

"ROCK = 1"

"PAPER = 2"

"SCISSORS = 3"

? -> A:

If (A>3 Or A<1)

Then ""

"ERROR"

""

GoTo 1

IfEnd

If (A=1)

Then "ROCK"

IfEnd

If (A=2)

Then "PAPER"

IfEnd

If (A=3)

Then "SCISSORS"

IfEnd

"VS"

Int (Ran# x3) +1 -> B

If(B=1)

Then "ROCK"

IfEnd

If (B=2)

Then  "PAPER"

IfEnd

If (B=3)

Then "SCISSORS"

IfEnd

""

IF (A÷B=1/2 Or A÷B=2/3 Or A÷B=3)

Then "LOSE":

IfEnd

If (A÷B=1/3 Or A÷B=2 Or A÷B=3/2)

Then "WIN":

IfEnd

If (A=B )

Then "TIE"

IfEnd

""

Lbl 2

"PLAY AGAIN?"

"Y=1 N=2”

? -> X:

If (X=1)

Then GoTo1

IfEnd

If (X=2)

Then Break

IfEnd

If (X≠ 1 And X ≠2)

Then "ERROR"

""

GoTo2

IfEnd

IfEnd

If (Y=2)

Then Lbl 3

"PLAYER ONE"

"ROCK = 1"

"PAPER = 2"

"SCISSORS = 3"

? -> A:

If (A>3 Or A<1)

Then ""

"ERROR"

""

GoTo3

IfEnd

"PRESS ENTER TO HIDE YOUR SELECTION"

""

""

""

Lbl 4

"PLAYER TWO"

"ROCK = 1"

"PAPER = 2"

"SCISSORS = 3"

? -> B:

If (A>3 Or A<1)

Then ""

"ERROR"

""

GoTo4

IfEnd

"PRESS ENTER TO HIDE YOUR SELECTION"

""

""

""

If (A=1)

Then "ROCK"

IfEnd

If (A=2)

Then "PAPER"

IfEnd

If (A=3)

Then "SCISSORS"

IfEnd

"VS"

If (B=1)

Then "ROCK"

IfEnd

If (B=2)

Then "PAPER"

IfEnd

If (B=3)

Then "SCISSORS"

IfEnd

""

If (A÷B=1 /2 Or A÷B=2/3 Or A÷B=3)

Then "PLAYER TWO WINS!":

IfEnd

If (A÷B=1/3 Or A÷B=2 Or A÷B=3/2)

Then "PLAYER ONE WINS":

IfEnd

If (A=B )

Then "TIE"

IfEnd

""

Lbl 5

"PLAY AGAIN?"

"Y=1 N=2"

? -> X:

If (X=1)

Then GoTo 3

IfEnd

If (X=2)

Then Break

IfEnd

If (X≠1 And X≠2)

Then "ERROR"

""

GoTo5

IfEnd

IfEnd

Edited by 2MB26, 18 November 2016 - 12:05 PM.

#### 0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users