So, I decided to make a question/display thread about ruby. I am currently trying to make a guessing game, sticking with the first game I made in TI-BASIC :P
Anyways, I'll ask questions here and showcase my programs, and maybe post downloads. :)
EDIT: A little input and display program:
while 1
puts 'Type whatever you want here!'
text = gets.chomp
puts text
if text == 'Quit'
abort
end
end
Also, a guessing game :)
If you have ruby installed, run the attached file.
Else, install it :P
guess = 10000
puts 'Guess a number from 0 to 50!'
number = rand(50)
while guess > 0
guess = gets.to_i
if guess == number
puts 'Great job! You guessed the number!'
abort
elsif guess > number
puts 'That is not the right number.'
puts 'Try again, with a LOWER number'
elsif guess < number
puts 'That is not the right number.'
puts 'Try again, with a HIGHER number'
end
end
O.o ruby looks quite like HP PPL as far as syntax I think I might give a shot at learning it, I hope you succeed Unicorn :)
Yeah, I like how much it is like a basic language. Another good thing, is that there are a few ruby dev environments in the cloud, like cloud9 :)
[spoiler]
Quote from: Unicorn on July 18, 2015, 05:33:48 PM
--snip--
Also, a guessing game :)
If you have ruby installed, run the attached file.
Else, install it :P
guess = 10000
puts 'Guess a number from 0 to 50!'
number = rand(50)
while guess > 0
guess = gets.to_i
if guess == number
puts 'Great job! You guessed the number!'
abort
elsif guess > number
puts 'That is not the right number.'
puts 'Try again, with a LOWER number'
elsif guess < number
puts 'That is not the right number.'
puts 'Try again, with a HIGHER number'
end
end
fixed yo indentation
[/spoiler]
Quote from: Unicorn on July 19, 2015, 12:26:24 AM
Yeah, I like how much it is like a basic language. Another good thing, is that there are a few ruby dev environments in the cloud, like cloud9 :)
Lots of languages have online environments. Even Haskell <3
lol, yeah, thats true.
Thanks for fixig that, I guess it didnt sav it when copy/pasting. I'll paste itnin tomorrow :)
The one thing I dislike about on calc editing is it is hard to inddent <_< I should add that to SIFS prog editor O.O
Good idea! But be reminded, this wasn't on calc. ;)
Quote from: Unicorn on July 19, 2015, 02:24:04 AM
Good idea! But be reminded, this wasn't on calc. ;)
It would be great if there were ARM powered calculators that ran a *nix OS (probably BSD. That seems like a good fit for a calculator!) so you could use any language you wanted without having to do much work porting, as well as use many programs targeted at desktop devices.
now I know what I should do with a future computer science degree :)
You could sell designs to TI or HP or Casio :P
Quote from: Unicorn on July 19, 2015, 03:46:40 AM
You could sell designs to TI or HP or Casio :P
I don't think any of them will listen. Especially TI.
Quote from: Strontium on July 19, 2015, 03:43:52 AM
Quote from: Unicorn on July 19, 2015, 02:24:04 AM
Good idea! But be reminded, this wasn't on calc. ;)
It would be great if there were ARM powered calculators that ran a *nix OS (probably BSD. That seems like a good fit for a calculator!) so you could use any language you wanted without having to do much work porting, as well as use many programs targeted at desktop devices.
now I know what I should do with a future computer science degree :)
/me points to Nspire Linux >.>
Quote from: Juju on July 19, 2015, 05:13:29 AM
Quote from: Strontium on July 19, 2015, 03:43:52 AM
Quote from: Unicorn on July 19, 2015, 02:24:04 AM
Good idea! But be reminded, this wasn't on calc. ;)
It would be great if there were ARM powered calculators that ran a *nix OS (probably BSD. That seems like a good fit for a calculator!) so you could use any language you wanted without having to do much work porting, as well as use many programs targeted at desktop devices.
now I know what I should do with a future computer science degree :)
/me points to Nspire Linux >.>
Thats not officially supported though, and it looks like a pain in the ass to use.
Actually, that would be nice if someone writes a calc GUI for Nspire Linux and would support a lot of stuff the official GUI wouldn't.
Question! Is sprinting possible with ruby? I know you would have to get a gem, but is it possible? And if so. I saw some things about CSS sprite gems, would the CSS be the same as CSS with HTML?
I haven't posted here in a while, but anyways, I've been messing around with the Green_Shoes (https://ashbb.github.io/green_shoes/) gem for GUI, and I ran into a problem.
This program I have quizzes the user. I have everything set up, but when the user gets the answer right, I can't get the screen to clear and allow new elements to be displayed. Is there like a ClrHome command?
I can post the code if need be, but I really am just asking for a command of some sort.
Thanks in advance.
Oh yeah, and I made the guessing game a little nicer looking.
require 'green_shoes'
guess = 0
ans = rand(1...50)
Shoes.app(title: "RubyGuess") do
while 1
guess = ask("Guess a Numer from 1 - 50")
guess = guess.to_i
if guess == ans
alert "Great Job! You guessed the number!"
if confirm("Quit?")
exit
end
end
if guess != ans
if guess > ans
quit = confirm(" You did not guess the number. Try a lower number.")
end
if guess < ans
quit = confirm(" You did not guess the number. Try a higher number")
end
if quit == false
exit
end
end
end
end
run the .rb if you have ruby and the gem green_shoes installed. Otherwise, run the .exe. On windows it takes about 30-45 seconds to open, it has to do with Ocra's packaging.
I solved that, but now, I have another problem
require 'green_shoes'
q_num = 1
score = 0
unit1 = rand(1 .. 6)
unit2 = rand(1 .. 3)
if unit2 == 1
type = "liquid"
end
if unit2 == 2
type = "mass or weight"
end
if unit2 == 3
type = "distance"
end
if unit1 == 1 && unit2 == 1
q_ans = "Milliliter"
q = 0.001
end
if unit1 == 1 && unit2 == 2
q_ans = "Milligram"
q = 0.001
end
if unit1 == 1 && unit2 == 3
q_ans = "Millimeter"
q = 0.001
end
if unit1 == 2 && unit2 == 1
q_ans = "Centiliter"
q = 0.01
end
if unit1 == 2 && unit2 == 2
q_ans = "Centigram"
q = 0.01
end
if unit1 == 2 && unit2 == 3
q_ans = "Centimeter"
q = 0.01
end
if unit1 == 3 && unit2 == 1
q_ans = "Deciliter"
q = 0.1
end
if unit1 == 3 && unit2 == 2
q_ans = "Decigram"
q = 0.1
end
if unit1 == 3 && unit2 == 3
q_ans = "Decimeter"
q = 0.1
end
if unit1 == 4 && unit2 == 1
q_ans = "Dekaliter"
q = 10
end
if unit1 == 4 && unit2 == 2
q_ans = "Dekagram"
q = 10
end
if unit1 == 4 && unit2 == 3
q_ans = "Dekameter"
q = 10
end
if unit1 == 5 && unit2 == 1
q_ans = "Hectoliter"
q = 100
end
if unit1 == 5 && unit2 == 2
q_ans = "Hectogram"
q = 100
end
if unit1 == 5 && unit2 == 3
q_ans = "Hectometer"
q = 100
end
if unit1 == 6 && unit2 == 1
q_ans = "Kiloliter"
q = 1000
end
if unit1 == 6 && unit2 == 2
q_ans = "Kilolgram"
q = 1000
end
if unit1 == 6 && unit2 == 3
q_ans = "Kilometer"
q = 1000
end
Shoes.app(title: "App", width: 500, height: 503) do
background white
@s = para "Score: #{score}/10", top: 200
@qn = para "Question #{q_num} of 10", top: 300
tagline "What is the correct unit?"
para ""
para ""
@q = para "#{q} + #{type}"
para ""
@e = edit_line :top => 133, :width => 400
button "Next" do
if @e.text.capitalize != q_ans
confrm = confirm ("Incorrect Answer. Next?")
@q.remove
unit1 = rand(1 .. 6)
unit2 = rand(1 .. 3)
if unit2 == 1
type = "liquid"
end
if unit2 == 2
type = "mass or weight"
end
if unit2 == 3
type = "distance"
end
if unit1 == 1 && unit2 == 1
q_ans = "Milliliter"
q = 0.001
end
if unit1 == 1 && unit2 == 2
q_ans = "Milligram"
q = 0.001
end
if unit1 == 1 && unit2 == 3
q_ans = "Millimeter"
q = 0.001
end
if unit1 == 2 && unit2 == 1
q_ans = "Centiliter"
q = 0.01
end
if unit1 == 2 && unit2 == 2
q_ans = "Centigram"
q = 0.01
end
if unit1 == 2 && unit2 == 3
q_ans = "Centimeter"
q = 0.01
end
if unit1 == 3 && unit2 == 1
q_ans = "Deciliter"
q = 0.1
end
if unit1 == 3 && unit2 == 2
q_ans = "Decigram"
q = 0.1
end
if unit1 == 3 && unit2 == 3
q_ans = "Decimeter"
q = 0.1
end
if unit1 == 4 && unit2 == 1
q_ans = "Dekaliter"
q = 10
end
if unit1 == 4 && unit2 == 2
q_ans = "Dekagram"
q = 10
end
if unit1 == 4 && unit2 == 3
q_ans = "Dekameter"
q = 10
end
if unit1 == 5 && unit2 == 1
q_ans = "Hectoliter"
q = 100
end
if unit1 == 5 && unit2 == 2
q_ans = "Hectogram"
q = 100
end
if unit1 == 5 && unit2 == 3
q_ans = "Hectometer"
q = 100
end
if unit1 == 6 && unit2 == 1
q_ans = "Kiloliter"
q = 1000
end
if unit1 == 6 && unit2 == 2
q_ans = "Kilolgram"
q = 1000
end
if unit1 == 6 && unit2 == 3
q_ans = "Kilometer"
q = 1000
end
q_num = q_num + 1
@q = para "#{q} + #{type}", top: 85
@e.clear
@e = edit_line :top => 133, :width => 400
@qn.clear
@qn = para "Question #{q_num} of 10", top: 300
if confrm == false
alert "You had a score of #{score}"
exit
end
end
if @e.text.capitalize == q_ans
confrm = confirm ("Correct Answer. Continue?")
if confrm == false
alert "You had a score of #{score}"
exit
end
if confrm == true
@q.remove
unit1 = rand(1 .. 6)
unit2 = rand(1 .. 3)
if unit2 == 1
type = "liquid"
end
if unit2 == 2
type = "mass or weight"
end
if unit2 == 3
type = "distance"
end
if unit1 == 1 && unit2 == 1
q_ans = "Milliliter"
q = 0.001
end
if unit1 == 1 && unit2 == 2
q_ans = "Milligram"
q = 0.001
end
if unit1 == 1 && unit2 == 3
q_ans = "Millimeter"
q = 0.001
end
if unit1 == 2 && unit2 == 1
q_ans = "Centiliter"
q = 0.01
end
if unit1 == 2 && unit2 == 2
q_ans = "Centigram"
q = 0.01
end
if unit1 == 2 && unit2 == 3
q_ans = "Centimeter"
q = 0.01
end
if unit1 == 3 && unit2 == 1
q_ans = "Deciliter"
q = 0.1
end
if unit1 == 3 && unit2 == 2
q_ans = "Decigram"
q = 0.1
end
if unit1 == 3 && unit2 == 3
q_ans = "Decimeter"
q = 0.1
end
if unit1 == 4 && unit2 == 1
q_ans = "Dekaliter"
q = 10
end
if unit1 == 4 && unit2 == 2
q_ans = "Dekagram"
q = 10
end
if unit1 == 4 && unit2 == 3
q_ans = "Dekameter"
q = 10
end
if unit1 == 5 && unit2 == 1
q_ans = "Hectoliter"
q = 100
end
if unit1 == 5 && unit2 == 2
q_ans = "Hectogram"
q = 100
end
if unit1 == 5 && unit2 == 3
q_ans = "Hectometer"
q = 100
end
if unit1 == 6 && unit2 == 1
q_ans = "Kiloliter"
q = 1000
end
if unit1 == 6 && unit2 == 2
q_ans = "Kilolgram"
q = 1000
end
if unit1 == 6 && unit2 == 3
q_ans = "Kilometer"
q = 1000
end
q_num = q_num + 1
@q = para "#{q} + #{type}", top: 85
@e.clear
@e = edit_line :top => 133, :width => 400
score = score + 1
@s.clear
@qn.clear
@s = para "Score: #{score}/10", top: 200
@qn = para "Question #{q_num} of 10", top: 300
if q_num == 11 && score == 10
confrm = confirm("You have completed all of the questions with a score of #{score}! You got an A+! Try again?")
if confrm == false
exit
end
if confrm == true
score = 0
q_num = 0
end
end
if q_num == 11
confrm = confirm("You have completed all of the questions with a score of #{score}! You did not ace the quiz. Try again?")
if confrm == false
exit
end
if confrm == true
score = 0
q_num = 0
end
end
end
end
end
para ""
para ""
para ""
para ""
para ""
para ""
para ""
para ""
para ""
para ""
para ""
para ""
para ""
button "Quit" do
alert "You had a score of #{score}"
exit
end
end
Anyhow, when it's run, it never asks for the Kilo prefix and meter suffix. I believe it has something to do with how I'm getting the rand, but I'm not sure. If someone could find out why its like that, it'd be great!
Oh yeah, and I'm sure there are a lot of things to be optimized, but I need to finish before optimizing. If you have any suggestions, please post them though.
Not sure what I did, but I fixed it! Updated the code
So, that same program is done, and I'm gonna release it!
require 'green_shoes'
q_num = 1
score = 0
unit1 = rand(1 .. 6)
unit2 = rand(1 .. 3)
if unit2 == 1
type = "liquid"
end
if unit2 == 2
type = "mass or weight"
end
if unit2 == 3
type = "distance"
end
if unit1 == 1 && unit2 == 1
q_ans = "Milliliter"
q = 0.001
end
if unit1 == 1 && unit2 == 2
q_ans = "Milligram"
q = 0.001
end
if unit1 == 1 && unit2 == 3
q_ans = "Millimeter"
q = 0.001
end
if unit1 == 2 && unit2 == 1
q_ans = "Centiliter"
q = 0.01
end
if unit1 == 2 && unit2 == 2
q_ans = "Centigram"
q = 0.01
end
if unit1 == 2 && unit2 == 3
q_ans = "Centimeter"
q = 0.01
end
if unit1 == 3 && unit2 == 1
q_ans = "Deciliter"
q = 0.1
end
if unit1 == 3 && unit2 == 2
q_ans = "Decigram"
q = 0.1
end
if unit1 == 3 && unit2 == 3
q_ans = "Decimeter"
q = 0.1
end
if unit1 == 4 && unit2 == 1
q_ans = "Dekaliter"
q = 10
end
if unit1 == 4 && unit2 == 2
q_ans = "Dekagram"
q = 10
end
if unit1 == 4 && unit2 == 3
q_ans = "Dekameter"
q = 10
end
if unit1 == 5 && unit2 == 1
q_ans = "Hectoliter"
q = 100
end
if unit1 == 5 && unit2 == 2
q_ans = "Hectogram"
q = 100
end
if unit1 == 5 && unit2 == 3
q_ans = "Hectometer"
q = 100
end
if unit1 == 6 && unit2 == 1
q_ans = "Kiloliter"
q = 1000
end
if unit1 == 6 && unit2 == 2
q_ans = "Kilogram"
q = 1000
end
if unit1 == 6 && unit2 == 3
q_ans = "Kilometer"
q = 1000
end
Shoes.app(title: "Metric Ladder Quiz", width: 500, height: 503) do
background white
@s = para "Score: #{score}/10", top: 200
@qn = para "Question #{q_num} of 10", top: 300
tagline "What is the correct unit?"
para ""
para ""
@q = para "#{q} + #{type}"
para ""
@e = edit_line :top => 133, :width => 400
button "Next" do
if @e.text.capitalize != q_ans
confrm = confirm ("Incorrect Answer. Next?")
@q.remove
unit1 = rand(1 .. 6)
unit2 = rand(1 .. 3)
if unit2 == 1
type = "liquid"
end
if unit2 == 2
type = "mass or weight"
end
if unit2 == 3
type = "distance"
end
if unit1 == 1 && unit2 == 1
q_ans = "Milliliter"
q = 0.001
end
if unit1 == 1 && unit2 == 2
q_ans = "Milligram"
q = 0.001
end
if unit1 == 1 && unit2 == 3
q_ans = "Millimeter"
q = 0.001
end
if unit1 == 2 && unit2 == 1
q_ans = "Centiliter"
q = 0.01
end
if unit1 == 2 && unit2 == 2
q_ans = "Centigram"
q = 0.01
end
if unit1 == 2 && unit2 == 3
q_ans = "Centimeter"
q = 0.01
end
if unit1 == 3 && unit2 == 1
q_ans = "Deciliter"
q = 0.1
end
if unit1 == 3 && unit2 == 2
q_ans = "Decigram"
q = 0.1
end
if unit1 == 3 && unit2 == 3
q_ans = "Decimeter"
q = 0.1
end
if unit1 == 4 && unit2 == 1
q_ans = "Dekaliter"
q = 10
end
if unit1 == 4 && unit2 == 2
q_ans = "Dekagram"
q = 10
end
if unit1 == 4 && unit2 == 3
q_ans = "Dekameter"
q = 10
end
if unit1 == 5 && unit2 == 1
q_ans = "Hectoliter"
q = 100
end
if unit1 == 5 && unit2 == 2
q_ans = "Hectogram"
q = 100
end
if unit1 == 5 && unit2 == 3
q_ans = "Hectometer"
q = 100
end
if unit1 == 6 && unit2 == 1
q_ans = "Kiloliter"
q = 1000
end
if unit1 == 6 && unit2 == 2
q_ans = "Kilogram"
q = 1000
end
if unit1 == 6 && unit2 == 3
q_ans = "Kilometer"
q = 1000
end
q_num = q_num + 1
@q = para "#{q} + #{type}", top: 85
@e.clear
@e = edit_line :top => 133, :width => 400
@qn.clear
@qn = para "Question #{q_num} of 10", top: 300
if confrm == false
alert "You had a score of #{score}"
exit
end
end
if @e.text.capitalize == q_ans
confrm = confirm ("Correct Answer. Continue?")
if confrm == false
alert "You had a score of #{score}"
exit
end
if confrm == true
@q.remove
unit1 = rand(1 .. 6)
unit2 = rand(1 .. 3)
if unit2 == 1
type = "liquid"
end
if unit2 == 2
type = "mass or weight"
end
if unit2 == 3
type = "distance"
end
if unit1 == 1 && unit2 == 1
q_ans = "Milliliter"
q = 0.001
end
if unit1 == 1 && unit2 == 2
q_ans = "Milligram"
q = 0.001
end
if unit1 == 1 && unit2 == 3
q_ans = "Millimeter"
q = 0.001
end
if unit1 == 2 && unit2 == 1
q_ans = "Centiliter"
q = 0.01
end
if unit1 == 2 && unit2 == 2
q_ans = "Centigram"
q = 0.01
end
if unit1 == 2 && unit2 == 3
q_ans = "Centimeter"
q = 0.01
end
if unit1 == 3 && unit2 == 1
q_ans = "Deciliter"
q = 0.1
end
if unit1 == 3 && unit2 == 2
q_ans = "Decigram"
q = 0.1
end
if unit1 == 3 && unit2 == 3
q_ans = "Decimeter"
q = 0.1
end
if unit1 == 4 && unit2 == 1
q_ans = "Dekaliter"
q = 10
end
if unit1 == 4 && unit2 == 2
q_ans = "Dekagram"
q = 10
end
if unit1 == 4 && unit2 == 3
q_ans = "Dekameter"
q = 10
end
if unit1 == 5 && unit2 == 1
q_ans = "Hectoliter"
q = 100
end
if unit1 == 5 && unit2 == 2
q_ans = "Hectogram"
q = 100
end
if unit1 == 5 && unit2 == 3
q_ans = "Hectometer"
q = 100
end
if unit1 == 6 && unit2 == 1
q_ans = "Kiloliter"
q = 1000
end
if unit1 == 6 && unit2 == 2
q_ans = "Kilogram"
q = 1000
end
if unit1 == 6 && unit2 == 3
q_ans = "Kilometer"
q = 1000
end
q_num = q_num + 1
@q = para "#{q} + #{type}", top: 85
@e.clear
@e = edit_line :top => 133, :width => 400
score = score + 1
@s.clear
@qn.clear
@s = para "Score: #{score}/10", top: 200
@qn = para "Question #{q_num} of 10", top: 300
if q_num == 11 && score == 10
confrm = confirm("You have completed all of the questions with a score of #{score}! You got an A+! Try again?")
if confrm == false
exit
end
if confrm == true
score = 0
q_num = 0
end
end
if q_num == 11
confrm = confirm("You have completed all of the questions with a score of #{score}! You did not ace the quiz. Try again?")
if confrm == false
exit
end
if confrm == true
score = 0
q_num = 0
end
end
end
end
end
para ""
para ""
para ""
para ""
para ""
para ""
para ""
para ""
para ""
para ""
para ""
para ""
para ""
button "Quit" do
quit = confirm("Are you sure you want to quit?")
if quit == true
alert "You had a score of #{score}"
exit
end
end
end
If you want to use it, download the file, and install ruby: https://www.ruby-lang.org/en/downloads/
After ruby is installed, open your terminal or cmd, and type:
[Windows] gem install green_shoes
[Linux] sudo gem install green_shoes
[OSX] Not sure, probably one of the two.
Example of play:
You get 2 hints, a number (.1, 100, 10, base ten) and you have to decide which metric name that is. 100 would be Hecto. You also get a substance (Liquid, mass, distance) and you have to name the metric unit for that. Liquid would be Liter. Put them together, and you get Hectoliter. That is your answer. Get all ten questions, and you get a cake. (not really)
(https://usercontent.irccloud-cdn.com/file/N29NoUAY/Screenshot%20from%202016-01-01%2021%3A17%3A19.png)