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)