require 'rubygems' require 'sdl' require 'LsPrime.rb' def avance(point,dir) return [point[0]+dir[0], point[1]+dir[1]] end def tourne(dir) return [dir[1], -dir[0]] end # Initialisation de la SDL # et ouverture d'une fenêtre SDL.init( SDL::INIT_VIDEO ) taille=200 screen = SDL::Screen.open(taille,taille,24,SDL::SWSURFACE) position=[taille/2,taille/2] dir=[1,0] # Demander le calcul préalable de tous les # nombres premiers nécessaires LsPrime.calcule(taille**2) nombre=1 for k in 1..(taille-2) 2.times do k.times do # Choix d'une couleur if LsPrime.isprime?(nombre) col=[0,51,255] # Bleu else col=[255,204,153] # Orange end # Affichage du point screen[position[0],position[1]]=col # Déplacement position=avance(position,dir) nombre=nombre+1 end #Tourne à gauche dir=tourne(dir) screen.flip end end p nombre while SDL::Event.poll.class!=SDL::Event::Quit end