Share via


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 Niclas

  • Anonymous
    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