@ -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 |