Carte de France vectorisé [LTS 5.22]
Publié : mar. 24/juin/2014 22:31
Pour les non anglophone et pour archive, voici le programme permettant d'exploiter un fichier de donnée afin d'afficher la carte de France sous forme de sprites, un sprite par département.
On peut greffer toutes sortes de données là dessus pour faire un jeu ou un soft didactique d'apprentissage.
Le fichier de données, à mettre dans le même répertoire que le listing.
http://wordoxhelper.free.fr/datadepartements.DAT
Le listing d'affichage: il colorie le département survolé par la souris et affiche le numéro du département.
On peut greffer toutes sortes de données là dessus pour faire un jeu ou un soft didactique d'apprentissage.
Le fichier de données, à mettre dans le même répertoire que le listing.
http://wordoxhelper.free.fr/datadepartements.DAT
Le listing d'affichage: il colorie le département survolé par la souris et affiche le numéro du département.
Code : Tout sélectionner
If InitSprite() = 0 Or InitKeyboard()=0 Or InitMouse()=0 Or InitNetwork()=0:MessageRequester("Error","Error DirectX",0):EndIf
If OpenWindow(0,0,0,870,801, "pathfinding Cooperatif ", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget)
If OpenWindowedScreen(WindowID(0),0,0,870,801,0,0,0,#PB_Screen_NoSynchronization)=0
MessageRequester("Erreur", "Impossible d'ouvrir un écran dans la fenêtre!", 0)
End
EndIf
EndIf
CreateSprite(200,20,20)
StartDrawing(SpriteOutput(200))
Box(0,0,20,20,#Red)
Box(1,1,20,20,#Black)
StopDrawing()
CreateSprite(201,1,1,#PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(201))
Plot(0,0,#White)
StopDrawing()
Structure xy
x.i
y.i
EndStructure
Structure dep
numero.i
barycentreX.i
barycentreY.i
xmin.i
ymin.i
Map vecteur.xy()
EndStructure
Global NewList departement.dep()
;charge les departements
If OpenFile(0,"datadepartements.DAT")
While Eof(0)=0
AddElement(departement())
departement()\numero=Val(StringField(ReadString(0),2,": "))
departement()\barycentreX=Val(StringField(ReadString(0),2,": "))
departement()\barycentreY=Val(StringField(ReadString(0),2,": "))
departement()\xmin=Val(StringField(ReadString(0),2,": "))
departement()\ymin=Val(StringField(ReadString(0),2,": "))
nb_vecteur.i=Val(StringField(ReadString(0),2,": "))
xmin=870:ymin=801:xmax=0:ymax=0:a=0
For i=1 To nb_vecteur
a+1
a$=StringField(ReadString(0),2,": ")
b$=StringField(ReadString(0),2,": ")
AddMapElement(departement()\vecteur(),a$+"/"+b$)
departement()\vecteur()\x=Val(a$)
If departement()\vecteur()\x>xmax:xmax=departement()\vecteur()\x:EndIf
If departement()\vecteur()\x<xmin:xmin=departement()\vecteur()\x:EndIf
departement()\vecteur()\y=Val(b$)
If departement()\vecteur()\y>ymax:ymax=departement()\vecteur()\y:EndIf
If departement()\vecteur()\y<ymin:ymin=departement()\vecteur()\y:EndIf
Next
Debug a
Debug nb_vecteur
If CreateSprite(departement()\numero,xmax-xmin+1,ymax-ymin+1,#PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(departement()\numero))
a=0
ForEach departement()\vecteur()
a+1
Plot(departement()\vecteur()\x-xmin,departement()\vecteur()\y-ymin,#Red)
Next
Debug a
FillArea(departement()\barycentreX-xmin-1,departement()\barycentreY-ymin,-1,#White)
StopDrawing()
EndIf
Wend
EndIf
Repeat
WindowEvent()
FlipBuffers()
ClearScreen(#Blue)
ExamineKeyboard()
ExamineMouse()
x=MouseX():y=MouseY()
test_souris.i=-1
ForEach departement()
DisplayTransparentSprite(departement()\numero,departement()\xmin,departement()\ymin)
If SpritePixelCollision(201,x,y,departement()\numero,departement()\xmin,departement()\ymin)
test_souris=ListIndex(departement())
EndIf
Next
If test_souris>-1
SelectElement(departement(),test_souris)
StartDrawing(ScreenOutput())
FillArea(departement()\barycentreX,departement()\barycentreY,-1,#Green)
DrawText(departement()\barycentreX,departement()\barycentreY,Str(departement()\numero))
StopDrawing()
EndIf
;display mouse sprite
DisplayTransparentSprite(200,x,y)
Until KeyboardPushed(#PB_Key_Escape)