SuperCars PPC
-
Coucou,
Quand une routine me prend la tête, je fais une pause et je me lance dans une autre routine et PAF!!!
Vla que j’trouve par hazard, comment utilisé l’angle de rotation d’une brush (brosse) pour l’utilisé comme donné pour un déplacement … sa donne supercars PPC lol
Mouarf, j’ai même mis une donnée pour l’accélération.
Bon, le gars qui arrive à faire le tour sans toucher l’herbe et balaise n’oublier pas, c’est quand même des virages à 90 ° et à fond vous êtes à 120 Km/heure
Dites moi si c’est bon, niveau jouabilité comme la fluidité.
Voici les liens
http://jeannoel.roueste.free.fr/Amiga/SuperCarsAOS.exe
http://jeannoel.roueste.free.fr/Amiga/SuperCarsMorphos.exe
La source dans pas longtemps, faut quand même que je montre un truc présentable
Une photo du truc
Edit : Code modifié, j’avais lancé un antialiasing de 640×480… hum… trop bête la crevette
Modération de Tcheko : marre de voir la mise en page explosée…
Mince… t’a testé sous morphos ou AOS?
oui, je sais faire le scrolling, c’est trrrès simple, même en multidirectionnel, même en parallax, même avec un effet 3D (moteur de outrun)…
Mais si déjà à la base se simple moteur de merde ne tourne pas, j’ai pas intéré de rajouter un scroll et encore moins d’autres voiture ou alors, une solution… passé de 640×480 à 320×200 et la sa va claquer… mais j’ai pas envie de faire des trucs qui pixelise à mort ou dans une mini fenêtre….
Remarque, j’utilise des commande de traçage pour le circuit (le truc à pas faire) sa marchera mieux avec une table de Brosse de 32×32 pixel
Voici le code source :
; Ouverture d’un Ecran
; J’explique bien sûr:
; « Mode= » défini quel mode utilisé, 3 sont disponibles.
; Ici, on choisi « Ask », cela permet l’ouverture d’une requête.
; 2 choix : Soit mode fenêtre, soit mode plein écran
@SCREEN {Mode= »Ask »,Width=640, Height=480}
; On démarre la méthode : Double buffer
BeginDoubleBuffer
; On défini le style de remplissage des formes primitives
; #FILLCOLOR = Remplir de la couleur de traçage
SetFillStyle(#FILLCOLOR)
; On défini un type de police de caractère, ou plutôt d’effet
; #EDGE = Entouré chaque lettre
; #BLACK = L’entourage de couleur noir peut être noté $000000
; « 1 » = L’épaisseur de l’entourage
SetFontStyle(#EDGE, #BLACK, 1)
; Création d’une Brosse (en interne)
; C’est la Brosse N°1 de longeur 32 pixel et de largeur 64 pixel
; La couleur de remplissage de se rectangle de 32×64 est le noir
; couleur que l’on aurait pu noter #BLACK (constante hollywood)
CreateBrush(1,32,64,$000000)
; On selectionne la Brosse créée
SelectBrush(1)
; On trace les cercles pour l’avant
Circle(1,0,11,$AA0000)
Circle(9,0,11,$AA0000)
; On trace le contour de la voiture
Box(2,6,28,60,$AA0000)
; Les vitres sinon on voit rien
Box(5,22,22,10,$111111,{RoundLevel = 50})
Box(5,50,22,5,$111111,{RoundLevel = 50})
; Le toit de la voiture
Box(5,30,21,20,$CC0000)
; On enlève le remplissage des formes primitives
SetFillStyle(#FILLNONE)
; Les petit détail, que des traits (capot)
Line(5,30,5,50,$111111)
Line(26,30,26,50,$111111)
Line (31,0,31,64,$000000)
Line (5,21,6,6,$880000)
Line (26,21,25,6,$880000)
Line (6,6,9,3,$880000)
Line (25,6,22,3,$880000)
Line (9,3,22,3,$880000)
; Le coffre pour ranger sont AMiga NG avec des pack de bières
; pour le lan entre copain
Box(6,56,20,8,$880000)
; On déselectionne la Brosse… on a fini la tuture
EndSelect
; On enlève le noir de fond de la Brosse, sinon
; sa fait une voiture dans un carré noir
SetBrushTransparency(1, #BLACK)
; Variable Global… Pas bien, mais on a pas le choix
X=320 ; Position X de départ de la tuture
Y=50 ; Position Y de départ de la tuture
Angle=0 ; Angle de départ de la tuture
vitesse=0 ; Vitesse de départ de la tuture
; déjà vu
SetFillStyle(#FILLCOLOR)
; Comme SetFontStyle
; on ajout un entourage des formes primitives… cool
SetFormStyle(#EDGE, #BLACK, 1)
; Attention, v’la de la programmation objet
; 1 fonction, bin sa fais un PRG principale + une routine, c’est objet lol
; Déclaration de la Fonction supercar()
Function supercar()
; Ah! des variables locales… c’est mieux
Local Avance = IsKeyDown(« UP ») ; Si j’appuie sur HAUT alors Avance=True
Local Recule = IsKeyDown(« Down ») ; même principe
Local Droite = IsKeyDown(« RIGHT ») ; …
Local Gauche = IsKeyDown(« LEFT ») ; …
If Avance = True
Vitesse=vitesse+0.3
If vitesse>4 Then vitesse=4
; Si Avance = False (donc on appuie pas sur haut)
Else
If vitesse>0
vitesse=vitesse-0.1
EndIf
EndIf
If Recule = True
Vitesse=vitesse-0.2
If vitesse<-1 Then vitesse=-1 Else If vitesse<0 vitesse=vitesse+0.2 EndIf EndIf If vitesse>0 And vitesse<0.1 Then vitesse=0
; LA c’est le plus important
; On calcule l’angle en radians d’ou l’angle en degré x 0.01745
Radians=Angle*0.01745
; Déplacement de la tuture selon X et Y qui se modifie en
; même temps
X=X+Cos(Radians)*vitesse
Y=Y-Sin(Radians)*vitesse
; Si la tuture arrive en bord d’écran, on affiche la tuture à la
; partie opposé, même principe que le jeux Asteroid
If X>680 Then X=-40
If X<-40 Then X=680 If Y<-40 Then Y=520 If Y>520 Then Y=-40
; Si la tuture est à l’arrêt, alors on tourne pas, normal
If vitesse<>0
If Droite = True Then Angle=Angle-1
If Gauche = True Then Angle=Angle+1
EndIf
; on utilise des commandes de traçages de primitive
; pour dessiner notre mini circuit
Box(0,0,640,480,#GREEN)
Box(10,10,620,460,$555555,{RoundLevel = 50})
Box(100,100,440,280,#GREEN,{RoundLevel = 50})
; Le text classique
TextOut(0,0, »vitesse : « )
TextOut(80,0,Round(Abs(vitesse*30)))
TextOut(110,0, »Km/h »)
TextOut(#CENTER,150, »INSTRUCTION »)
TextOut(#CENTER,160, »
« )TextOut(#CENTER,180, »Fleche HAUT pour accélérer »)
TextOut(#CENTER,190, »Fleche Bas pour Freiner-reculer »)
TextOut(#CENTER,200, »Fleche droite et gauche pour la rotation de la tuture »)
TextOut(#CENTER,240, »ATTENTION »)
TextOut(#CENTER,250, »
« )TextOut(#CENTER,270, »Vous ne pouvez pas faire tourner la voiture »)
TextOut(#CENTER,280, »si elle ne roule pas « )
; On Affiche la tutre après, sa évite le CLS, donc on gagne du temp
DisplayBrush(1,X,Y,{AnchorX = 0.5, AnchorY = 0.5,rotate=-90+Angle})
; on bascule l’écran de travail
Flip
; Fin de la fonction
EndFunction
; on défini un interval de temps, ici normalement sa tourne à 50 FPS Maxi
; même sur un ANG à 1000 Ghz
SetInterval (1,supercar,1000/50)
; Boucle habituel d’hollywood sinon le PRG s’arrête
Repeat
; On attend une action de l’utilisateur pour sortir de cette boucle
; infini, et la lance la fonction supercar
WaitEvent
Forever
Modération de Tcheko : idem. Copier l’italique dans un fichier texte à police fixe.
Récupère juste la formule de déplacement pour l’insérer dans un programme basic classique et hop, sa marche aussi…
Nouveau fichier téléchargeable…
A tester, car bien plus rapide (en tous cas sur mon PC)
C’est un bon petit début, mais cela reste un poil lent sous MOS 2.7 et un Peg II G4.
Il n’y a plus qu’à rajouter du scroll, d’autres voitures, de la gestion de collision, un peu de graph, un peu de charme, de la zique, des bruitages et te voilà parti pour développer un petit jeu old-school sympathique
Ha si ! Il manque un moyen simple pour quitter le programme en mode écran… J’ai trouvé Ctrl-C comme c’est souvent le cas par défaut pour des programmes de tests….
Abonnez-vous à ma nouvelle chronique "En Route vers le Futur" sur Youtube !
Le scroll, d’autres tutures,gestion des collisions,des bruitage et de la zics, pas de problème pour moi, le plus dur sera les graphs et le charme…
Sur le site d’hollywood, les specs minimales sont les suivantes :
AmigaOS 3 (m68k)
Amiga: Hi- or Truecolor screenmode, 68020 CPU
Du coup pas besoin de carte additionnelle, si ?
Après peut être que ça dépend des appels que tu fais sur le code.
Ma config : Amiga CD32 nue, c'est un super joujou pour rester dans le monde de l'Amiga 🙂
Fais nous un asteroids, à la place de faire une tuture, tu fais un vaisseau, et t’enlève ces lignes
If vitesse<>0
If Droite = True Then Angle=Angle-4
If Gauche = True Then Angle=Angle+4
EndIf
Comme sa, ton vaisseau tourne sans être obliger de te déplacer
Dans le guide hollywood, il est spécifié qu’il faut obligatoirement une carte graphique
Les mode true et hi color sont dispo, si je dis pas de bêtise, qu’avec une carte GFX, l’aga ne le faisant pas
Nouvel approche (tout en bitmap)
avec scroll multidirectionnel… faite pas gaffe aux graphs… ils ont nul lol
Se qui compte c’est le nombre de FPS
Vos avis svp
Rappel:
Voici les liens
Merci Lion… pas mal, mais il faut que j’approfondisse le code
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › SuperCars PPC