Forum » » Création-Développement » » Outrun Holly démo ;-)
Posté : 01-03-2011 17:26
Tiens, je te mets le code d'un programme en blitzbasic, affichant une route et un véhicule, je l'avais modifié et je ne l'ai jamais terminé. Si ça peut te servir, meme si c'est pour un 1200.
NEWTYPE .road
x0.w:z0:y0:x1:z1:y1 ;coordonnees
col &n bsp; ;couleur
sign & nbsp; ;largeur
signx ;objets
End NEWTYPE
NEWTYPE .draw
x0.w:y0:x1:y1:x2:y2:x3:y3:x4:y4
End NEWTYPE
NEWTYPE.cmove
lngth.w ;longueur en z
xadd ;ajout p our des courbes en x
xch ;ajout&n bsp;a xadd pour creer des courbes
yadd ;ajout e n y pour changer de hauteur
End NEWTYPE
DEFTYPE.draw a
Dim obj.road(10),vitesses.w(5)
Dim conflict.cmove(100)
; x z&n bsp; y x z y c
obj(0)\x0=100,1000,100,100,900,100,1
obj(1)\x0=100,900,100,100,800,100,2
obj(2)\x0=100,800,100,100,700,100,1
obj(3)\x0=100,700,100,100,600,100,2
obj(4)\x0=100,600,100,100,500,100,1
obj(5)\x0=100,500,100,100,400,100,2
obj(6)\x0=100,400,100,100,300,100,1
obj(7)\x0=100,300,100,100,200,100,2
obj(8)\x0=100,200,100,100,100,100,1
obj(9)\x0=100,100,100,100,000,100,2
vitesses(0)=0
vitesses(1)=30
vitesses(2)=45
vitesses(3)=80
vitesses(4)=110
vitesses(5)=160
longueur_circuit=6
conflict(0)\lngth=20,0,3,0
conflict(1)\lngth=20,60,-3,0
conflict(2)\lngth=10,0,-4,8
conflict(3)\lngth=20,-40,1,-8
conflict(4)\lngth=10,-20,2,8
conflict(5)\lngth=100
xview=196 ;position depart
yview=100 ;vue en y
rsize=240 ;largeur route
Function pointx3d{x,z}
SHARED xview
xd=160+(x-xview)/(1+(z/200))
Function Return xd
End Function
Function pointy3d{z,y}
yd=y/(1+(z/200))
Function Return yd
End Function
#LARG = 320
#HAUT = 200
BitMap 0,#LARG,#HAUT,4
BitMap 1,#LARG,#HAUT,4
InitCopList 0,44,#HAUT,$10004,0,16,-4
BitMap 2,#LARG,#HAUT,4
LoadBitMap 2,"bak.pic",0
LoadPalette 1,"rbow.col"
LoadShapes 0,35,"test.shp"
BLITZ
DisplayBitMap 0,0
DisplayPalette 0,0
DisplayRainbow 0,8,1
CreateDisplay 0
bm=0:vitesse=0:speed=0:rapport=1
xadd=1:yadd=1
Repeat
j=Joyr(1)
; Deplacement en x
If vitesse>0
If j=5 OR j=6 OR j=7
xview-16
End If
If j=1 OR j=2 OR j=3
xview+16
End If
x0=pointx3d{obj(0)\x0,obj(0)\z0}:x1=pointx3d{obj(0)\x 0+rsize,obj(0)\z0}
xx=pointx3d{xview,0}
If xx<x0-5 Then xview+16
If xx>x1+5 Then xview-16
; Line x0,#HAUT-20,x0,#HAUT,1
; Line x1,#HAUT-20,x1,#HAUT,1
; Line xx,#HAUT-20,xx,#HAUT,3
EndIf
; Vitesse
If j=0 OR j=1 OR j=7
If vitesse<=vitesses(rapport) Then vitesse+2
Else
If vitesse>0 Then If j=4 Then vitesse-4 Else vitesse-2
End If
If vitesse<0 Then vitesse=0
speed=vitesse/vitesses(rapport)*100:pourcent=speed/100*30
Box 4,9,36,21,0:Boxf 5,10,5+pourcent,20,15:If spee d>75 Then Boxf 27,10,5+pourcent,20,14
For i=1 To rapport
Line 5*i,25,5*i,35,0
Next
; Rapport
If vitesse>vitesses(rapport) Then rapport+1:If& nbsp;rapport>5 Then rapport=5
If vitesse<vitesses(rapport-1) Then rapport-1:I f rapport<1 Then rapport=1
; Avance
If speed>0
For nr=0 To 9
obj(nr)\z0-speed: obj(nr)\z1-speed
Next
If obj(9)\z0<-100
; Calcul de ob j(x)
rpos+1
obj(10)\x0=obj(9)\x0
obj(10)\z0=obj(9)\z0
obj(10)\x1=obj(9)\x1
For nr=9 To 1 Step&nb sp;-1
obj(nr)\x0=obj(nr-1)\x0,obj(n r)\z0+100,obj(nr-1)\y0
obj(nr)\x1=obj(nr-1)\x1,obj(n r)\z1+100,obj(nr-1)\y1
obj(nr)\col=obj(nr-1)\col,obj (nr-1)\sign,obj(nr-1)\signx
Next
; Courbes
If rpos=conflict(conf)\lngth Th en rpos=0:conf+1
If conf=longueur_circuit
conf=0
conflict(0)\lngth=20,0,3,0
conflict(1)\lngth=20,60,-3,0< br /> conflict(2)\lngth=10,0,-4,8
conflict(3)\lngth=20,-40,1,-8
conflict(4)\lngth=10,-20,2,8< br /> conflict(5)\lngth=100
Else
conflict(conf)\xadd+conflict( conf)\xch
EndIf
obj(0)\x0=obj(1)\x0+conflict(conf)\xadd
obj(0)\y0=obj(1)\y0+conflict(conf)\yadd
; Initialisation de obj(0)
obj(0)\z0=1000+obj(10)\z0
obj(0)\x1=obj(1)\x0,900+obj(10)\z0,obj(1) \y0,3-obj(1)\col
EndIf
EndIf
; Calcul du point de vue
k=(obj(8)\y1-obj(8)\y0)/(obj(8)\z1-obj(8)\z0)
yview=#HAUT-(obj(8)\y0-k*obj(8)\z0)
If k<0
car=1
Else
If k>0 Then car=2 Else ca r=0
End If
If j=1 OR j=2 OR j=3
car+3
Else
If j=5 OR j=6 OR j=7 Th en car+6
End If
; Affichage
Use BitMap bm
bm=1-bm
DisplayBitMap 0,bm
; Creation du decor
BlockScroll 0,0,#LARG,#HAUT,0,0,2
For nr=0 To 9
;x3--x2
;x0--x1
x0=pointx3d{obj(nr)\x0,obj(nr)\z0}:y0=yview+pointy3d{ obj(nr)\z0,obj(nr)\y0}
x1=pointx3d{obj(nr)\x0+rsize,obj(nr)\z0}:y1=y0
x2=pointx3d{obj(nr)\x1+rsize,obj(nr)\z1}:y2=yview+poi nty3d{obj(nr)\z1,obj(nr)\y1}
x3=pointx3d{obj(nr)\x1,obj(nr)\z1}:y3=y2
Boxf 0,y0,#LARG-1,#HAUT-1,obj(nr)\col+2
a\x0=x0,y0,x1,y1,x2,y2,x3,y3,x0,y0
Polyf 4,a,obj(nr)\col
Next
; Affichage de la voiture
Blit car,144,168
VWait
Until Joyb(0)=1
AMIGA
End
Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=1008&forum=14