diff options
| author | Amir Rajan <[email protected]> | 2020-09-11 02:02:01 -0500 |
|---|---|---|
| committer | Amir Rajan <[email protected]> | 2020-09-11 02:02:57 -0500 |
| commit | 33ec37b141e896b47ed642923fd33b0c658ae9fb (patch) | |
| tree | a40d3e5d41beeb06508200078f6f26b0ee57d6a4 /samples/00_intermediate_ruby_primer/app | |
| parent | 958cf43779d2bf528869e80511c4c4f2a433b2db (diff) | |
| download | dragonruby-game-toolkit-contrib-33ec37b141e896b47ed642923fd33b0c658ae9fb.tar.gz dragonruby-game-toolkit-contrib-33ec37b141e896b47ed642923fd33b0c658ae9fb.zip | |
synced samples
Diffstat (limited to 'samples/00_intermediate_ruby_primer/app')
8 files changed, 0 insertions, 489 deletions
diff --git a/samples/00_intermediate_ruby_primer/app/01_commenting_code.txt b/samples/00_intermediate_ruby_primer/app/01_commenting_code.txt deleted file mode 100644 index 37cd3ed..0000000 --- a/samples/00_intermediate_ruby_primer/app/01_commenting_code.txt +++ /dev/null @@ -1,13 +0,0 @@ -# ==================================================================================== -# Commenting Code -# ==================================================================================== -# -# Prefixing text with a pound sign (#) is how you comment code in Ruby. Example: -# -# I am commented code. And so are the lines above. -# -# I you want more than a quick primer on Ruby, check out https://poignant.guide/. It's -# an entertaining read. Otherwise, go to the next txt file. -# -# Follow along by visiting: -# https://s3.amazonaws.com/s3.dragonruby.org/dragonruby-gtk-intermediate.mp4 diff --git a/samples/00_intermediate_ruby_primer/app/02_printing_to_the_console.txt b/samples/00_intermediate_ruby_primer/app/02_printing_to_the_console.txt deleted file mode 100644 index 54fbb5c..0000000 --- a/samples/00_intermediate_ruby_primer/app/02_printing_to_the_console.txt +++ /dev/null @@ -1,14 +0,0 @@ -# ==================================================================================== -# Printing to the Console: -# ==================================================================================== -# -# Every time you save repl.rb file, DragonRuby runs the code within it. Copy this text -# to repl.rb and save to see Hello World printed to the console. - -puts '' -puts '' -puts '================================' -puts 'Hello World' -puts '================================' -puts '' -puts '' diff --git a/samples/00_intermediate_ruby_primer/app/03_types_and_assignments.txt b/samples/00_intermediate_ruby_primer/app/03_types_and_assignments.txt deleted file mode 100644 index 2617ae4..0000000 --- a/samples/00_intermediate_ruby_primer/app/03_types_and_assignments.txt +++ /dev/null @@ -1,74 +0,0 @@ -# ==================================================================================== -# Types and Assignments -# ==================================================================================== -# -# Here is how you define various data structures in Ruby. Same deal here. Take the text -# in this file and paste it into repl.rb and save: - -puts '' -puts '' -puts '================================' -puts '' - -# ==================================================================================== -# Strings -# ==================================================================================== - -puts '======== strings' -message = "Hello World" -puts "The value of message is: " + message -puts "Any value can be interpolated within a string using \#{}." -puts "Interpolated message: #{message}." -puts 'This #{message} is not interpolated because the string uses single quotes.' -puts '' - -# ==================================================================================== -# Numerics -# ==================================================================================== - -puts '======== ints and floats' -a = 10 -puts "The value of a is: #{a}" -puts "a + 1 is: #{a + 1}" -puts "a / 3 is: #{a / 3}" -puts '' - -b = 10.12 -puts "The value of b is: #{b}" -puts "b + 1 is: #{b + 1}" -puts "b as an integer is: #{b.to_i}" -puts '' - -# ==================================================================================== -# Booleans -# ==================================================================================== - -puts '======== truthy / falsey values' -puts "Anything that *isn't* false or nil is true." - -c = 30 -puts "The value of c is #{c}." - -if c - puts "This if statement ran because c is truthy." -end - -d = false -puts "The value if d is #{d}." - -if !d - puts "This if statement ran because d is falsey, using the not operator (!)." -end - -e = nil - -puts "Nil is also considered falsey. The value of e is: #{e}." - -if !e - puts "This if statement ran because e is nil (a falsey value)." -end - -puts '' -puts '================================' -puts '' -puts '' diff --git a/samples/00_intermediate_ruby_primer/app/04_conditionals.txt b/samples/00_intermediate_ruby_primer/app/04_conditionals.txt deleted file mode 100644 index 6cf24f0..0000000 --- a/samples/00_intermediate_ruby_primer/app/04_conditionals.txt +++ /dev/null @@ -1,104 +0,0 @@ -# ==================================================================================== -# Conditionals -# ==================================================================================== - -puts '' -puts '' -puts '================================' -puts '' - -i_am_true = true -i_am_nil = nil -i_am_false = false -i_am_hi = "hi" - -# ==================================================================================== -# if -# ==================================================================================== - -puts "======== if statement" -i_am_one = 1 -if i_am_one - puts "This was printed because i_am_one is truthy." -end - -# ==================================================================================== -# if/else -# ==================================================================================== - -puts "======== if/else statement" -if i_am_false - puts "This will NOT get printed because i_am_false is false." -else - puts "This was printed because i_am_false is false." -end - -# ==================================================================================== -# if/elsif/else -# ==================================================================================== - -puts "======== if/elsif/else statement" -if i_am_false - puts "This will NOT get printed because i_am_false is false." -elsif i_am_true - puts "This was printed because i_am_true is true." -else - puts "This will NOT get printed i_am_true was true." -end - -# ==================================================================================== -# case -# ==================================================================================== - -puts "======== case statement " -i_am_one = 1 -case i_am_one -when 10 - puts "10" -when 9 - puts "9" -when 5 - puts "5" -when 1 - puts "1" -else - puts "Value wasn't cased." -end - -# ==================================================================================== -# comparison operators -# ==================================================================================== - -puts "======== different types of comparisons" -if 4 == 4 - puts "equal" -end - -if 4 != 3 - puts "not equal" -end - -if 3 < 4 - puts "less than" -end - -if 4 > 3 - puts "greater than" -end - -# ==================================================================================== -# and/or conditionals -# ==================================================================================== - -if ((4 > 3) || (3 < 4) || false) - puts "or statement" -end - -if ((4 > 3) && (3 < 4)) - puts "and statement" -end - -puts '' -puts '================================' -puts '' -puts '' diff --git a/samples/00_intermediate_ruby_primer/app/05_looping.txt b/samples/00_intermediate_ruby_primer/app/05_looping.txt deleted file mode 100644 index fafdcfc..0000000 --- a/samples/00_intermediate_ruby_primer/app/05_looping.txt +++ /dev/null @@ -1,61 +0,0 @@ -# ==================================================================================== -# Looping -# ==================================================================================== -# -# Looping looks a whole lot different than other languages. -# But it's pretty awesome when you get used to it. - -puts '' -puts '' -puts '================================' -puts '' - -# ==================================================================================== -# times -# ==================================================================================== - - -puts "times block:" -3.times do |i| - puts i -end -puts '' - - -# ==================================================================================== -# ranges -# ==================================================================================== - -puts "range block exclusive:" -(0...3).each do |i| - puts i -end -puts '' - -puts "range block inclusive:" -(0..3).each do |i| - puts i -end -puts '' - -# ==================================================================================== -# Enumerables -# ==================================================================================== - -puts 'array each' -colors = ["red", "blue", "yellow"] -colors.each do |color| - puts color -end -puts '' - -puts 'array each_with_index' -colors = ["red", "blue", "yellow"] -colors.each_with_index do |color, i| - puts "#{color} at index #{i}" -end - -puts '' -puts '================================' -puts '' -puts '' diff --git a/samples/00_intermediate_ruby_primer/app/06_functions.txt b/samples/00_intermediate_ruby_primer/app/06_functions.txt deleted file mode 100644 index 6ee8da1..0000000 --- a/samples/00_intermediate_ruby_primer/app/06_functions.txt +++ /dev/null @@ -1,49 +0,0 @@ -# ==================================================================================== -# Functions -# ==================================================================================== - -# The last statement of a function is implictly returned. Parenthesis for functions -# are optional as long as the statement can be envaluated disambiguously. - -puts '' -puts '' -puts '================================' -puts '' - -# ==================================================================================== -# Functions single parameter -# ==================================================================================== - -def add_one_to n - n + 1 -end - -puts add_one_to(3) - -# ==================================================================================== -# Functions with default parameter values -# ==================================================================================== - -def function_with_default_value v = 10 - v * 10 -end - -puts "passing three: #{function_with_default_value(3)}" -puts "passing nil: #{function_with_default_value}" - -# ==================================================================================== -# Nil default parameter value and ||= operator. -# ==================================================================================== - -def function_with_nil_default_with_local a = nil - result = a - result ||= "or equal operator was exected and set a default value" -end - -puts "passing 'hi': #{function_with_nil_default_with_local 'hi'}" -puts "passing nil: #{function_with_nil_default_with_local}" - -puts '' -puts '================================' -puts '' -puts '' diff --git a/samples/00_intermediate_ruby_primer/app/07_powerful_arrays.txt b/samples/00_intermediate_ruby_primer/app/07_powerful_arrays.txt deleted file mode 100644 index 2c7e2f1..0000000 --- a/samples/00_intermediate_ruby_primer/app/07_powerful_arrays.txt +++ /dev/null @@ -1,171 +0,0 @@ -# ==================================================================================== -# Arrays -# ==================================================================================== - -# Arrays are incredibly powerful in Ruby. Learn to use them well. - -puts '' -puts '' -puts '================================' -puts '' - -# ==================================================================================== -# Enumerable ranges and .to_a -# ==================================================================================== - -puts "Create an array with the numbers 1 to 10." -one_to_ten = (1..10).to_a -puts one_to_ten - -# ==================================================================================== -# Finding elements -# ==================================================================================== - -puts "Create a new array that only contains even numbers from the previous array." -evens = one_to_ten.find_all do |number| - number % 2 == 0 -end -puts evens - -# ==================================================================================== -# Rejecting elements -# ==================================================================================== - -puts "Create a new array that rejects odd numbers." -also_even = one_to_ten.reject do |number| - number % 2 != 0 -end -puts also_even - -# ==================================================================================== -# Array transform using the map function. -# ==================================================================================== - -puts "Create an array that doubles every number." -doubled = one_to_ten.map do |number| - number * 2 -end -puts doubled - -# ==================================================================================== -# Combining array functions. -# ==================================================================================== - -puts "Create an array that selects only odd numbers and then multiply those by 10." -odd_doubled = one_to_ten.find_all do |number| - number % 2 != 0 -end.map do |odd_number| - odd_number * 10 -end -puts odd_doubled - -# ==================================================================================== -# Product function. -# ==================================================================================== - -puts "All combination of numbers 1 to 10." -all_combinations = one_to_ten.product(one_to_ten) -puts all_combinations - -# ==================================================================================== -# Uniq and sort function. -# ==================================================================================== - -puts "All uniq combinations of numbers." -puts "For example: [1, 2] is the same as [2, 1]." -uniq_combinations = - one_to_ten.product(one_to_ten) - .map do |unsorted_number| - unsorted_number.sort - end.uniq -puts uniq_combinations - -# ==================================================================================== -# Example of an advanced array transform. -# ==================================================================================== - -puts "All unique Pythagorean Triples between 1 and 100 sorted by area of the triangle." - -one_to_hundred = (1..100).to_a - -triples = - one_to_hundred.product(one_to_hundred).map do |width, height| - [width, height, Math.sqrt(width ** 2 + height ** 2)] - end.find_all do |_, _, hypotenuse| - hypotenuse.to_i == hypotenuse - end.map do |triangle| - triangle.map(&:to_i) - end.uniq do |triangle| - triangle.sort - end.map do |width, height, hypotenuse| - [width, height, hypotenuse, (width * height) / 2] - end.sort_by do |_, _, _, area| - area - end - -triples.each do |width, height, hypotenuse, _| - puts "(#{width}, #{height}, #{hypotenuse})" -end - -puts '' -puts '================================' -puts '' -puts '' - -# ==================================================================================== -# Example of an sorting. -# ==================================================================================== - -things_to_sort = [ - { type: :background, order: 1 }, - { type: :foreground, order: 1 }, - { type: :foreground, order: 2 } -] - -# For a simple sort, you can use sort_by -results = things_to_sort.sort_by do |hash| - hash[:order] -end - -puts "Simple sort:" -puts results - -# for a more complicated sort, you can provide a block that returns -# -1, 0, 1 for a left and right operand -results = things_to_sort.sort do |l, r| - sort_result = 0 - puts "here is l: #{l}" - puts "here is r: #{r || "nil"}" - # if either value is nil/false return 0 - if !l || !r - sort_result = 0 - # if the type of "left" is background and the - # type of "right" is foreground, then return - # -1 (which means "left" is less than "right" - elsif l[:type] == :background && r[:type] == :foreground - sort_result = -1 - # if the type of "left" is foreground and the - # type of "right" is background, then return - # 1 (which means "left" is greater than "right" - elsif l[:type] == :foreground && r[:type] == :background - sort_result = 1 - # if "left" and "right"'s type are the same, then - # use the order as the tie breaker - elsif l[:order] < r[:order] - sort_result = -1 - elsif l[:order] > r[:order] - sort_result = 1 - # returning 0 means both values are equal - else - sort_result = 0 - end - sort_result -end.to_a - -puts "Custom sort:" -puts results - -# ==================================================================================== -# Api documention for Array that is worth commiting to memory because arrays are so -# awesome in Ruby: https://docs.ruby-lang.org/en/2.0.0/Array.html -# ==================================================================================== diff --git a/samples/00_intermediate_ruby_primer/app/main.rb b/samples/00_intermediate_ruby_primer/app/main.rb deleted file mode 100644 index 96461aa..0000000 --- a/samples/00_intermediate_ruby_primer/app/main.rb +++ /dev/null @@ -1,3 +0,0 @@ -def tick args - args.outputs.labels << [640, 380, "Open repl.rb in the text editor of your choice and follow the document.", 0, 1] -end |
