@ -0,0 +1,4 @@ | 
				
			|||
*.md | 
				
			|||
LICENSE | 
				
			|||
Smaug.toml | 
				
			|||
app/main.rb | 
				
			|||
@ -0,0 +1,6 @@ | 
				
			|||
builds/ | 
				
			|||
logs/ | 
				
			|||
exceptions/ | 
				
			|||
last_replay.txt | 
				
			|||
replay.txt | 
				
			|||
.DS_Store | 
				
			|||
@ -0,0 +1,23 @@ | 
				
			|||
.gitkeep | 
				
			|||
.gitlab-ci.yml | 
				
			|||
.rspec | 
				
			|||
.github/ | 
				
			|||
.gitignore | 
				
			|||
.rubocop.yml | 
				
			|||
.travis.yml | 
				
			|||
.do/ | 
				
			|||
.smaugignore | 
				
			|||
Rakefile | 
				
			|||
Gemfile | 
				
			|||
Gemfile.lock | 
				
			|||
*.gemspec | 
				
			|||
smaug/**/bin/ | 
				
			|||
smaug/**/spec/ | 
				
			|||
smaug/**/samples/ | 
				
			|||
logs/ | 
				
			|||
builds/ | 
				
			|||
dist/ | 
				
			|||
index.html | 
				
			|||
*.md | 
				
			|||
exceptions | 
				
			|||
.DS_Store | 
				
			|||
@ -1,3 +1,5 @@ | 
				
			|||
# smaug_project_template | 
				
			|||
# ${REPO_NAME} | 
				
			|||
 | 
				
			|||
Template repo for a Smaug project | 
				
			|||
> ${REPO_DESCRIPTION} | 
				
			|||
 | 
				
			|||
--- | 
				
			|||
 | 
				
			|||
@ -0,0 +1,22 @@ | 
				
			|||
[project] | 
				
			|||
# The name of your game's executable. This should only contain a-z, A-Z, 0-9, _ or -. | 
				
			|||
name = "${REPO_NAME_SNAKE}" | 
				
			|||
# The game's title. This will show up in the tile bar of your executable. | 
				
			|||
title = "${REPO_NAME_TITLE}" | 
				
			|||
version = "0.1.0" | 
				
			|||
authors = ["TODO: ${REPO_OWNER} <todo@example.com>"] | 
				
			|||
icon = "metadata/icon.png" | 
				
			|||
compile_ruby = false | 
				
			|||
 | 
				
			|||
[dragonruby] | 
				
			|||
version = "3.0" | 
				
			|||
edition = "pro" | 
				
			|||
 | 
				
			|||
[dependencies] | 
				
			|||
 | 
				
			|||
[itch] | 
				
			|||
# The Project URL you set when you created the game on Itch.io. https://my-username.itch.io/my-game. | 
				
			|||
# This will also be the name of your build files, so fill it out even if you aren't uploading to Itch.io. | 
				
			|||
url = "todo-change-me" | 
				
			|||
# Your username on Itch.io. | 
				
			|||
username = "todo-change-me" | 
				
			|||
@ -0,0 +1,7 @@ | 
				
			|||
require 'smaug.rb' | 
				
			|||
 | 
				
			|||
def tick args | 
				
			|||
  args.outputs.labels  << [640, 500, '${REPO_NAME_TITLE}', 5, 1] | 
				
			|||
  args.outputs.labels  << [640, 460, '${REPO_DESCRIPTION}', 5, 1] | 
				
			|||
  args.outputs.sprites << [576, 280, 128, 101, 'dragonruby.png'] | 
				
			|||
end | 
				
			|||
@ -0,0 +1,307 @@ | 
				
			|||
# =============================================================== | 
				
			|||
# Welcome to repl.rb | 
				
			|||
# =============================================================== | 
				
			|||
# You can experiement with code within this file. Code in this | 
				
			|||
# file is only executed when you save (and only excecuted ONCE). | 
				
			|||
# =============================================================== | 
				
			|||
 | 
				
			|||
# =============================================================== | 
				
			|||
# REMOVE the "x" from the word "xrepl" and save the file to RUN | 
				
			|||
# the code in between the do/end block delimiters. | 
				
			|||
# =============================================================== | 
				
			|||
 | 
				
			|||
# =============================================================== | 
				
			|||
# ADD the "x" to the word "repl" (make it xrepl) and save the | 
				
			|||
# file to IGNORE the code in between the do/end block delimiters. | 
				
			|||
# =============================================================== | 
				
			|||
 | 
				
			|||
# Remove the x from xrepl to run the code. Add the x back to ignore to code. | 
				
			|||
xrepl do | 
				
			|||
  puts "The result of 1 + 2 is: #{1 + 2}" | 
				
			|||
end | 
				
			|||
 | 
				
			|||
# ==================================================================================== | 
				
			|||
# Ruby Crash Course: | 
				
			|||
# Strings, Numeric, Booleans, Conditionals, Looping, Enumerables, Arrays | 
				
			|||
# ==================================================================================== | 
				
			|||
 | 
				
			|||
# ==================================================================================== | 
				
			|||
#  Strings | 
				
			|||
# ==================================================================================== | 
				
			|||
# Remove the x from xrepl to run the code. Add the x back to ignore to code. | 
				
			|||
xrepl do | 
				
			|||
  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.' | 
				
			|||
end | 
				
			|||
 | 
				
			|||
# ==================================================================================== | 
				
			|||
#  Numerics | 
				
			|||
# ==================================================================================== | 
				
			|||
# Remove the x from xrepl to run the code. Add the x back to ignore to code. | 
				
			|||
xrepl do | 
				
			|||
  a = 10 | 
				
			|||
  puts "The value of a is: #{a}" | 
				
			|||
  puts "a + 1 is: #{a + 1}" | 
				
			|||
  puts "a / 3 is: #{a / 3}" | 
				
			|||
end | 
				
			|||
 | 
				
			|||
# Remove the x from xrepl to run the code. Add the x back to ignore to code. | 
				
			|||
xrepl do | 
				
			|||
  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 '' | 
				
			|||
end | 
				
			|||
 | 
				
			|||
# ==================================================================================== | 
				
			|||
#  Booleans | 
				
			|||
# ==================================================================================== | 
				
			|||
# Remove the x from xrepl to run the code. Add the x back to ignore to code. | 
				
			|||
xrepl do | 
				
			|||
  c = 30 | 
				
			|||
  puts "The value of c is #{c}." | 
				
			|||
 | 
				
			|||
  if c | 
				
			|||
    puts "This if statement ran because c is truthy." | 
				
			|||
  end | 
				
			|||
end | 
				
			|||
 | 
				
			|||
# Remove the x from xrepl to run the code. Add the x back to ignore to code. | 
				
			|||
xrepl do | 
				
			|||
  d = false | 
				
			|||
  puts "The value of d is #{d}." | 
				
			|||
 | 
				
			|||
  if !d | 
				
			|||
    puts "This if statement ran because d is falsey, using the not operator (!) makes d evaluate to true." | 
				
			|||
  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 | 
				
			|||
end | 
				
			|||
 | 
				
			|||
# ==================================================================================== | 
				
			|||
#  Conditionals | 
				
			|||
# ==================================================================================== | 
				
			|||
# Remove the x from xrepl to run the code. Add the x back to ignore to code. | 
				
			|||
xrepl do | 
				
			|||
  i_am_true  = true | 
				
			|||
  i_am_nil   = nil | 
				
			|||
  i_am_false = false | 
				
			|||
  i_am_hi    = "hi" | 
				
			|||
 | 
				
			|||
  puts "======== if statement" | 
				
			|||
  i_am_one = 1 | 
				
			|||
  if i_am_one | 
				
			|||
    puts "This was printed because i_am_one is truthy." | 
				
			|||
  end | 
				
			|||
 | 
				
			|||
  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 | 
				
			|||
 | 
				
			|||
  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 | 
				
			|||
 | 
				
			|||
  puts "======== case statement " | 
				
			|||
  i_am_one = 1 | 
				
			|||
  case i_am_one | 
				
			|||
  when 10 | 
				
			|||
    puts "case equaled: 10" | 
				
			|||
  when 9 | 
				
			|||
    puts "case equaled: 9" | 
				
			|||
  when 5 | 
				
			|||
    puts "case equaled: 5" | 
				
			|||
  when 1 | 
				
			|||
    puts "case equaled: 1" | 
				
			|||
  else | 
				
			|||
    puts "Value wasn't cased." | 
				
			|||
  end | 
				
			|||
 | 
				
			|||
  puts "======== different types of comparisons" | 
				
			|||
  if 4 == 4 | 
				
			|||
    puts "equal (4 == 4)" | 
				
			|||
  end | 
				
			|||
 | 
				
			|||
  if 4 != 3 | 
				
			|||
    puts "not equal (4 != 3)" | 
				
			|||
  end | 
				
			|||
 | 
				
			|||
  if 3 < 4 | 
				
			|||
    puts "less than (3 < 4)" | 
				
			|||
  end | 
				
			|||
 | 
				
			|||
  if 4 > 3 | 
				
			|||
    puts "greater than (4 > 3)" | 
				
			|||
  end | 
				
			|||
 | 
				
			|||
  if ((4 > 3) || (3 < 4) || false) | 
				
			|||
    puts "or statement ((4 > 3) || (3 < 4) || false)" | 
				
			|||
  end | 
				
			|||
 | 
				
			|||
  if ((4 > 3) && (3 < 4)) | 
				
			|||
    puts "and statement ((4 > 3) && (3 < 4))" | 
				
			|||
  end | 
				
			|||
end | 
				
			|||
 | 
				
			|||
# ==================================================================================== | 
				
			|||
# Looping | 
				
			|||
# ==================================================================================== | 
				
			|||
# Remove the x from xrepl to run the code. Add the x back to ignore to code. | 
				
			|||
xrepl do | 
				
			|||
  puts "======== times block" | 
				
			|||
  3.times do |i| | 
				
			|||
    puts i | 
				
			|||
  end | 
				
			|||
  puts "======== range block exclusive" | 
				
			|||
  (0...3).each do |i| | 
				
			|||
    puts i | 
				
			|||
  end | 
				
			|||
  puts "======== range block inclusive" | 
				
			|||
  (0..3).each do |i| | 
				
			|||
    puts i | 
				
			|||
  end | 
				
			|||
end | 
				
			|||
 | 
				
			|||
# ==================================================================================== | 
				
			|||
#  Enumerables | 
				
			|||
# ==================================================================================== | 
				
			|||
# Remove the x from xrepl to run the code. Add the x back to ignore to code. | 
				
			|||
xrepl do | 
				
			|||
  puts "======== array each" | 
				
			|||
  colors = ["red", "blue", "yellow"] | 
				
			|||
  colors.each do |color| | 
				
			|||
    puts color | 
				
			|||
  end | 
				
			|||
 | 
				
			|||
  puts '======== array each_with_index' | 
				
			|||
  colors = ["red", "blue", "yellow"] | 
				
			|||
  colors.each_with_index do |color, i| | 
				
			|||
    puts "#{color} at index #{i}" | 
				
			|||
  end | 
				
			|||
end | 
				
			|||
 | 
				
			|||
# Remove the x from xrepl to run the code. Add the x back to ignore to code. | 
				
			|||
xrepl do | 
				
			|||
  puts "======== single parameter function" | 
				
			|||
  def add_one_to n | 
				
			|||
    n + 5 | 
				
			|||
  end | 
				
			|||
 | 
				
			|||
  puts add_one_to(3) | 
				
			|||
 | 
				
			|||
  puts "======== function with default value" | 
				
			|||
  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}" | 
				
			|||
 | 
				
			|||
  puts "======== Or Equal (||=) operator for nil values" | 
				
			|||
  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}" | 
				
			|||
end | 
				
			|||
 | 
				
			|||
# ==================================================================================== | 
				
			|||
#  Arrays | 
				
			|||
# ==================================================================================== | 
				
			|||
# Remove the x from xrepl to run the code. Add the x back to ignore to code. | 
				
			|||
xrepl do | 
				
			|||
  puts "======== Create an array with the numbers 1 to 10." | 
				
			|||
  one_to_ten = (1..10).to_a | 
				
			|||
  puts one_to_ten | 
				
			|||
 | 
				
			|||
  puts "======== Create a new array that only contains even numbers from the previous array." | 
				
			|||
  one_to_ten = (1..10).to_a | 
				
			|||
  evens = one_to_ten.find_all do |number| | 
				
			|||
    number % 2 == 0 | 
				
			|||
  end | 
				
			|||
  puts evens | 
				
			|||
 | 
				
			|||
  puts "======== Create a new array that rejects odd numbers." | 
				
			|||
  one_to_ten = (1..10).to_a | 
				
			|||
  also_even = one_to_ten.reject do |number| | 
				
			|||
    number % 2 != 0 | 
				
			|||
  end | 
				
			|||
  puts also_even | 
				
			|||
 | 
				
			|||
  puts "======== Create an array that doubles every number." | 
				
			|||
  one_to_ten = (1..10).to_a | 
				
			|||
  doubled = one_to_ten.map do |number| | 
				
			|||
    number * 2 | 
				
			|||
  end | 
				
			|||
  puts doubled | 
				
			|||
 | 
				
			|||
  puts "======== Create an array that selects only odd numbers and then multiply those by 10." | 
				
			|||
  one_to_ten = (1..10).to_a | 
				
			|||
  odd_doubled = one_to_ten.find_all do |number| | 
				
			|||
    number % 2 != 0 | 
				
			|||
  end.map do |odd_number| | 
				
			|||
    odd_number * 10 | 
				
			|||
  end | 
				
			|||
  puts odd_doubled | 
				
			|||
 | 
				
			|||
  puts "======== All combination of numbers 1 to 10." | 
				
			|||
  one_to_ten = (1..10).to_a | 
				
			|||
  all_combinations = one_to_ten.product(one_to_ten) | 
				
			|||
  puts all_combinations | 
				
			|||
 | 
				
			|||
  puts "======== All uniq combinations of numbers. For example: [1, 2] is the same as [2, 1]." | 
				
			|||
  one_to_ten = (1..10).to_a | 
				
			|||
  uniq_combinations = | 
				
			|||
    one_to_ten.product(one_to_ten) | 
				
			|||
      .map do |unsorted_number| | 
				
			|||
    unsorted_number.sort | 
				
			|||
  end.uniq | 
				
			|||
  puts uniq_combinations | 
				
			|||
end | 
				
			|||
 | 
				
			|||
# ==================================================================================== | 
				
			|||
#  Advanced Arrays | 
				
			|||
# ==================================================================================== | 
				
			|||
# Remove the x from xrepl to run the code. Add the x back to ignore to code. | 
				
			|||
xrepl do | 
				
			|||
  puts "======== All unique Pythagorean Triples between 1 and 40 sorted by area of the triangle." | 
				
			|||
 | 
				
			|||
  one_to_hundred = (1..40).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, area| | 
				
			|||
    puts "(#{width}, #{height}, #{hypotenuse}) = #{area}" | 
				
			|||
  end | 
				
			|||
end | 
				
			|||
@ -0,0 +1,29 @@ | 
				
			|||
# For advanced users: | 
				
			|||
# You can put some quick verification tests here, any method | 
				
			|||
# that starts with the `test_` will be run when you save this file. | 
				
			|||
 | 
				
			|||
# Here is an example test and game | 
				
			|||
 | 
				
			|||
# To run the test: ./dragonruby mygame --eval app/tests.rb --no-tick | 
				
			|||
 | 
				
			|||
class MySuperHappyFunGame | 
				
			|||
  attr_gtk | 
				
			|||
 | 
				
			|||
  def tick | 
				
			|||
    outputs.solids << [100, 100, 300, 300] | 
				
			|||
  end | 
				
			|||
end | 
				
			|||
 | 
				
			|||
def test_universe args, assert | 
				
			|||
  game = MySuperHappyFunGame.new | 
				
			|||
  game.args = args | 
				
			|||
  game.tick | 
				
			|||
  assert.true!  args.outputs.solids.length == 1, "failure: a solid was not added after tick" | 
				
			|||
  assert.false! 1 == 2, "failure: some how, 1 equals 2, the world is ending" | 
				
			|||
  puts "test_universe completed successfully" | 
				
			|||
end | 
				
			|||
 | 
				
			|||
puts "running tests" | 
				
			|||
$gtk.reset 100 | 
				
			|||
$gtk.log_level = :off | 
				
			|||
$gtk.tests.start | 
				
			|||
@ -0,0 +1 @@ | 
				
			|||
Put level data and other txt files here. | 
				
			|||
@ -0,0 +1 @@ | 
				
			|||
Put your custom fonts here. | 
				
			|||
@ -0,0 +1,10 @@ | 
				
			|||
# This file was automatically @generated by Smaug. | 
				
			|||
# Do not manually edit this file. Edit Smaug.toml instead. | 
				
			|||
 | 
				
			|||
devid=todo-change-me | 
				
			|||
devtitle=TODO: ${REPO_OWNER} <todo@example.com> | 
				
			|||
gameid=${REPO_NAME_SNAKE} | 
				
			|||
gametitle=${REPO_NAME_TITLE} | 
				
			|||
version=0.1.0 | 
				
			|||
icon=metadata/icon.png | 
				
			|||
compile_ruby=false | 
				
			|||
| 
		 After Width: | Height: | Size: 153 KiB  | 
@ -0,0 +1,14 @@ | 
				
			|||
# ios_metadata.txt is used by the Pro version of DragonRuby Game Toolkit to create iOS apps. | 
				
			|||
# Information about the Pro version can be found at: http://dragonruby.org/toolkit/game#purchase | 
				
			|||
 | 
				
			|||
# teamname needs to be set to your assigned team id which can be found at https://developer.apple.com/account/#/membership/L7H57V9CRD | 
				
			|||
teamid= | 
				
			|||
# appid needs to be set to your application identifier which can be found at https://developer.apple.com/account/resources/identifiers/list | 
				
			|||
appid= | 
				
			|||
# appname is the name you want to show up underneath the app icon on the device | 
				
			|||
appname= | 
				
			|||
 | 
				
			|||
# devcert is the certificate to use for development/deploying to your local device | 
				
			|||
devcert= | 
				
			|||
# prodcert is the certificate to use for distribution to the app store | 
				
			|||
prodcert= | 
				
			|||
@ -0,0 +1,4 @@ | 
				
			|||
# This file was automatically @generated by Smaug. | 
				
			|||
# Do not manually edit this file. Edit Smaug.toml instead. | 
				
			|||
 | 
				
			|||
 | 
				
			|||
@ -0,0 +1 @@ | 
				
			|||
Put your sounds here. | 
				
			|||
| 
		 After Width: | Height: | Size: 13 KiB  | 
| 
		 After Width: | Height: | Size: 2.9 KiB  | 
| 
		 After Width: | Height: | Size: 3.0 KiB  | 
| 
		 After Width: | Height: | Size: 2.6 KiB  | 
| 
		 After Width: | Height: | Size: 2.7 KiB  | 
| 
		 After Width: | Height: | Size: 2.6 KiB  | 
| 
		 After Width: | Height: | Size: 267 B  | 
| 
		 After Width: | Height: | Size: 4.5 KiB  | 
| 
		 After Width: | Height: | Size: 4.6 KiB  | 
| 
		 After Width: | Height: | Size: 4.6 KiB  | 
| 
		 After Width: | Height: | Size: 4.7 KiB  | 
| 
		 After Width: | Height: | Size: 4.6 KiB  | 
| 
		 After Width: | Height: | Size: 4.6 KiB  | 
| 
		 After Width: | Height: | Size: 2.5 KiB  |