XNA Framework och IronRuby
Kort postning, bara så att jag inte glömmer bort det… Har lekt lite med Ruby och IronRuby under sommaren för att bredda mig och försöka se tjusningen med dynamiska språk. Lyckades nyss få till ett exempel på den grundläggande funktionaliteten i XNA Framework på PC med hjälp av IronRuby:
require 'Microsoft.Xna.Framework, Version=3.1.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d' require 'Microsoft.Xna.Framework.Game, Version=3.1.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d'
include Microsoft::Xna::Framework
include Microsoft::Xna::Framework::Input
include Microsoft::Xna::Framework::Graphics
class MyGame < Game
def initialize
@graphics = GraphicsDeviceManager.new self
end
def update gameTime
keyboardState = Keyboard.get_state PlayerIndex.One
if keyboardState.is_key_down Keys.Space
exit
end
super gameTime
end
def draw gameTime
graphics_device.clear Color.CornflowerBlue
super gameTime
end
end
theGame = MyGame.new
theGame.run
Är jag på rätt väg? Nu ska jag sova…
Uppdaterades (2009-07-30 22:41) med lite mer funktionalitet och baserat på kommentar från Johan!
Comments
Anonymous
July 29, 2009
Håller också på att lära mig Ruby, körde mycket dynamiska/skriptiga språk förr och har saknat det. Det roligaste jag sett hittils med Ruby är möjligheten att göra egna DSL. Ett problem som jag sett det med för "finurlig" Rubykod är nog att det kan bli bra knepigt för andra programmerare debugga. Men på rätt nivå så känns Ruby som ett riktigt skönt programmeringsspråk att både skriva och läsa. Man får inte glömma att skriva tester bara :) Det som stör mig mest med IronRuby är nog att man blivit så bortskämd med VisualStudio när man kodar C# och VB.NET. Vilken editor använder du?Anonymous
July 29, 2009
Om man vill vara lite mer Ruby-aktig så ska kanske din Draw() metod skrivas med liten bokstav. Jag gillar att man i IronRuby kan anropa .NET ramverkets klasser och metoder med "Ruby-stil", exempelvis: System::Console.WriteLine("Funkar") System::Console.WriteLine "Funkar också" System::Console.write_line "Funkar utmärkt"Anonymous
August 19, 2009
Ett vanligt Ruby-idiom när det är enkla if-satser (speciellt av typen guard clause) är: def update gameTime keyboardState = Keyboard.get_state PlayerIndex.One exit if keyboardState.is_key_down Keys.Space super gameTime end Mvh NiclasAnonymous
August 19, 2009
Plus snake_case istället för CamelCase på alla variabler, lite samma sak som Johan Danforth var inne på. gameTime blir game_time, o.s.v. CamelCase på klassnamn, annars snake_case. Mvh Niclas