Tron
Publié : ven. 14/oct./2005 16:49
je remet mon tron ici parceque je suis mem pas sur de l'avoir posté !!
comme je suis retombé dessus , cela peut etre utile au debutants , sait on jamais !!
se dirige avec les touche fleché !!
la direction est active si la touche est relaché !!
comme je suis retombé dessus , cela peut etre utile au debutants , sait on jamais !!

se dirige avec les touche fleché !!
la direction est active si la touche est relaché !!
Code : Tout sélectionner
; Version Purebasic V4.00 modifié Djes
; Tron creé Par Dobro V3.5.2 avec score (non sauvegardé)
; pour le sens j'ai choisi
;le sens des aiguilles d'une montre en commencant par midi
;sens=1 : monte ver midi
;sens=2 : va a droite vers 3 heures
;sens=3 : descend vers 6 heures
;sens=4 : va a gauche vers 9 heures
;(c'est le langage utilise dans l'aviation)
; "fait gaffe a tes 6 heures"
; veut dire qu vous avez quelqu'un derriere vous !!
; la variable pos c'est pareil mais pour le joueur
;pos=1 en haut ect..
Declare tir(sens)
Global xordi,yordi,ymissille,tir
#dobro=1
#Police=1
#ordi=1
#joueur=2
#test=3
#missordih=4
#missordiv=5
#missordihoff=6
#missordivoff=7
missordi=3
InitKeyboard() :; j'espere qu'il y a un clavier au moins !!
vitesse=10
vitessejoueur=10
Declare test_coul(x)
; ***********************************
Resultat = InitSprite()
FontID = LoadFont(#Police, "arial", 9 ,#PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN):;=largeur de l'ecran
EcranY = GetSystemMetrics_(#SM_CYSCREEN):;=hauteur de l'ecran
WindowID = OpenWindow(1, 0, 0, 800, 600, "TRON Par Dobro", #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered )
WindowID = WindowID(1)
Result = OpenWindowedScreen(WindowID,0,0, 800, 600, 1, 0,0)
SetFrameRate(60)
CreateSprite(#ordi, 10,10 )
CreateSprite(#joueur, 10,10)
CreateSprite(#test, 10,10)
CreateSprite(#missordih, 10,10)
StartDrawing(SpriteOutput(#missordih) )
Box(0, 4, 10,8, RGB(0,255, 0))
StopDrawing()
CreateSprite(#missordihoff, 12,12)
StartDrawing(SpriteOutput(#missordihoff) )
Box(0, 0, 12,12, RGB(0,0,0)) :; METTRE RGB(255,0,255)
StopDrawing()
CreateSprite(#missordiv, 10,10)
StartDrawing(SpriteOutput(#missordiv) )
Box(4,0,8,10, RGB(0,255, 0))
StopDrawing()
CreateSprite(#missordivoff, 12,12)
StartDrawing(SpriteOutput(#missordivoff) )
Box(0,0,12,12, RGB(0,0, 0))
StopDrawing()
CreateSprite(#test, 10,10)
StartDrawing(SpriteOutput(#test) )
Box(0,0,10,10, RGB(255,255, 255))
StopDrawing()
;CreateSprite(#missillejoueurh, 10,10)
;CreateSprite(#missillejoueurv, 10,10)
StartDrawing(SpriteOutput(#ordi) )
Box(0, 0, 10,10 , RGB(255,0, 0))
StopDrawing()
StartDrawing(SpriteOutput(#joueur) )
Box(0, 0, 10, 10 , RGB(0,0, 255))
StopDrawing()
debut:
rouge=50
vert=50
bleu=50
score$="HUMAN="+Str(scorehuman)+" TRON ="+Str(scoretron)
SetWindowTitle(1, score$)
; dessin du cadre exterieur
StartDrawing(ScreenOutput())
Box(0, 0, 800,600 , RGB(255,255,0))
StopDrawing()
StartDrawing(ScreenOutput())
Box(10, 10, 780,580 , RGB(0,0,0))
FrontColor(RGB(255,255, 0))
BackColor(RGB(0,0,0))
DrawingFont(FontID)
DrawText(350,-5,"<------------")
DrawText(350,585,"<------------")
DrawText(4,280,"|")
DrawText(4,290,"|")
DrawText(4,300,"|")
DrawText(4,310,"|")
DrawText(3,320,"v")
DrawText(790,280,"^")
DrawText(792,290,"|")
DrawText(792,300,"|")
DrawText(792,310,"|")
DrawText(792,320,"|")
StopDrawing()
Couleurjoueur=0
xordi=450:; placement du sprite reserve a l'ordi
yordi=290 :; pareil en y
xjoueur=400 :; placement du sprite reserve au joueur
yjoueur=300 :; pareil en y
de=Random(1000):; ceci va determiner un depart aleatoire,vers le haut,le bas,a droite,a gauche)
RandomSeed(de)
pos=Random(3)+1
de=Random(1000)
RandomSeed(de)
sens=Random(3)+1 :; pareil mais pour l'ordi
;sens=4
Repeat
Delay(50)
Event=WindowEvent()
ExamineKeyboard()
If pos=1:; monte
yjoueur-vitessejoueur
StartDrawing( ScreenOutput())
Couleurjoueur = Point(xjoueur, yjoueur)
Couleurjoueurg = Point(xjoueur-4, yjoueur)
Couleurjoueurd = Point(xjoueur+14, yjoueur)
StopDrawing()
touche=test_coul(Couleurjoueur)
If touche=2
Goto su
EndIf
EndIf
If pos=2:;droite
xjoueur+vitessejoueur
StartDrawing( ScreenOutput())
Couleurjoueur = Point(xjoueur, yjoueur)
Couleurjoueurg = Point(xjoueur, yjoueur-4)
Couleurjoueurd = Point(xjoueur, yjoueur+14)
StopDrawing()
touche=test_coul(Couleurjoueur)
If touche=2
Goto su
EndIf
EndIf
If pos=3:;bas
yjoueur+vitessejoueur
StartDrawing( ScreenOutput())
Couleurjoueur = Point(xjoueur, yjoueur)
Couleurjoueurg = Point(xjoueur-2, yjoueur)
Couleurjoueurd = Point(xjoueur+14, yjoueur)
StopDrawing()
touche=test_coul(Couleurjoueur)
If touche=2
Goto su
EndIf
EndIf
If pos=4:;gauche
xjoueur-vitessejoueur
StartDrawing( ScreenOutput())
Couleurjoueur = Point(xjoueur, yjoueur)
Couleurjoueurg = Point(xjoueur, yjoueur+14)
Couleurjoueurd = Point(xjoueur, yjoueur-4)
StopDrawing()
touche=test_coul(Couleurjoueur)
If touche=2
Goto su
EndIf
EndIf
;EndIf
;***************ASSISTANCE POUR LES PAROIS EXTERIEURs *****************
Gosub assistance_mur
;********************************
If KeyboardPushed( #PB_Key_Left ) And kpl=#False
touche=test_coul(Couleurjoueur)
If touche=2
Goto su
EndIf
pos-1:dob=1
If pos<1
pos=4
EndIf
kpl=#True
EndIf
If KeyboardPushed( #PB_Key_Right ) And kpr=#False
touche=test_coul(Couleurjoueur)
If touche=2
Goto su
EndIf
pos+1:dob=1
If pos>4
pos=1
EndIf
kpr=#True
EndIf
If KeyboardReleased( #PB_Key_Left ) And kpl
kpl=#False
EndIf
If KeyboardReleased( #PB_Key_Right ) And kpr
kpr=#False
EndIf
; ******************** ordi avance *******************************
;sens=Random(4)+1
Select sens
Case 1 :; il monte
StartDrawing( ScreenOutput())
Couleur1 = Point(xordi, yordi-4) :;test en haut
Couleur2 = Point(xordi-4, yordi) :;test a gauche
Couleur3 = Point(xordi+14, yordi) :;test a droite
StopDrawing()
;DisplaySprite(#test, xordi, yordi-12)
If Couleur1>0 And Couleur2>0 And Couleur3>0 :; tout autour c'es colore , donc c'est perdu
toucheordi=1
Goto su
EndIf
; detection d'une couleur devant mais test si ordi peut passer a droite ou a gauche
If Couleur1>0 :; ya une couleur devant (donc un mur)
If Couleur3=0 And Couleur2=0 :; a droite et a gauche on peut passer
dede=Random(2)+1:; on tire a hazard droite ou gauche
If dede=1
sens=4:; on part a gauche
Goto su
EndIf
If dede=2
sens=2:; on part a droite
Goto su
EndIf
EndIf
If Couleur3=0 :; il n'y a qu'a droite que c'est libre
sens=2:; alors on y va
Goto su
EndIf
If Couleur2=0:;si a gauche ya pas de couleur (c'est libre)
sens=4 :;on va a gauche
Goto su
EndIf
EndIf
If yordi>10 :; inverse la coordonee pour inverser le sens de deplacement
yordi-vitesse
Else
sens=2
EndIf
Case 2:; il va a droite
StartDrawing( ScreenOutput())
Couleur1 = Point(xordi+14, yordi) :;test a droite
Couleur2 = Point(xordi, yordi-4) :;test en haut
Couleur3 = Point(xordi, yordi+14) :;test en bas
StopDrawing()
If Couleur1>0 And Couleur2>0 And Couleur3>0
toucheordi=1
Goto su
EndIf
If Couleur1>0
If Couleur2=0 And Couleur3=0
dede=Random(2)+1
If dede=1
sens=3
Goto su
EndIf
If dede=2
sens=1
Goto su
EndIf
EndIf
If Couleur2=0
sens=1
Goto su
EndIf
If Couleur3=0
sens=3
Goto su
EndIf
EndIf
If xordi<=780
xordi+vitesse
Else
sens=3
EndIf
Case 3:; il descend
StartDrawing( ScreenOutput())
Couleur1 = Point(xordi, yordi+14) :;test en bas
Couleur2 = Point(xordi+14, yordi) :;test a droite
Couleur3 = Point(xordi-4, yordi) :;test a gauche
StopDrawing()
If Couleur1>0 And Couleur2>0 And Couleur3>0
toucheordi=1
Goto su
EndIf
If Couleur1>0
If Couleur3=0 And Couleur2=0
dede=Random(2)+1
If dede=1
sens=2
Goto su
EndIf
If dede=2
sens=4
Goto su
EndIf
EndIf
If Couleur3=0
sens=4
Goto su
EndIf
If Couleur2=0
sens=2
Goto su
EndIf
EndIf
If yordi<580
yordi+vitesse
Else
sens=4
EndIf
Case 4:; il va a gauche
StartDrawing( ScreenOutput())
Couleur1 = Point(xordi-4, yordi) :;test a gauche
Couleur2 = Point(xordi, yordi-4) :;test en haut
Couleur3 = Point(xordi, yordi+14) :;test en bas
StopDrawing()
If Couleur1>0 And Couleur2>0 And Couleur3>0
toucheordi=1
Goto su
EndIf
If Couleur1>0
If Couleur2=0 And Couleur3=0
dede=Random(2)+1
If dede=1
sens=3
Goto su
EndIf
If dede=2
sens=1
Goto su
EndIf
EndIf
If Couleur2=0
sens=1
Goto su
EndIf
If Couleur3=0
sens=3
Goto su
EndIf
EndIf
If xordi>10
xordi-vitesse
Else
sens=1
EndIf
EndSelect
; Couleur = Point(xordi, yordi)
; rouge =255
; bleu = 16711680
;vert = 65280
su:
Gosub message_gagne_perdu
;********* tir missille
;If yordi=yjoueur Or xordi=xjoueur
;sens=2
;If sens=2
;tir=1
;EndIf
;If cont<20
; cont+1
; tir=0
;Else
; cont=0
; tir=1
; sens=4
;EndIf
; If tir=1 And sens=4
;
; ThreadID = CreateThread(@tir(),4)
;WaitThread(ThreadID)
; ; tir(1)
;EndIf
DisplaySprite(#ordi, xordi , yordi )
DisplaySprite(#joueur, xjoueur , yjoueur )
FlipBuffers():; affiche l'ecran
;ClearScreen(0, 0, 0) :;efface l'ecran
rouge+1
;************** couleur *************
StartDrawing(SpriteOutput(#ordi) )
;If Rouge>255:Bleu+1:EndIf
;If Bleu>255:Vert+1:EndIf
;If Vert>255:Rouge+1:EndIf
rouge=Random(55)+200
coul= RGB(rouge, 100, 50)
Box(0, 0, 10,10 , coul)
StopDrawing()
StartDrawing(SpriteOutput(#joueur) )
;If Rouge>255:Bleu+1:EndIf
;If Bleu>255:Vert+1:EndIf
;If Vert>255:Rouge+1:EndIf
bleu=Random(55)+200
coul= RGB(150, 0, bleu)
Box(0, 0, 10,10 , coul)
StopDrawing()
;************************************
Until Event=#PB_Event_CloseWindow
End
Procedure test_coul(Couleurjoueur)
;255=rouge
;16711680=bleu
;65280 =vert
If Couleurjoueur>0 Or Couleurjoueur>0 Or Couleurjoueur>0
touche=2
Else
touche=0
EndIf
ProcedureReturn touche
EndProcedure
Procedure tir(valeur)
Shared yordi,xordi,ymissille
If valeur=1
While yordi-ymissille>40
ymissille+5
DisplaySprite(#missordiv,xordi, yordi-20-ymissille):; affiche le missile
DisplaySprite(#missordivoff,xordi, yordi-10-ymissille):; affiche le missile
FlipBuffers():; affiche l'ecran
Wend
tir=0
DisplaySprite(#missordivoff,xordi, yordi-10-ymissille)
FlipBuffers():; affiche l'ecran
EndIf
If valeur=3
While yordi+ymissille<560
ymissille+5
DisplaySprite(#missordiv,xordi, yordi+20+ymissille):; affiche le missile
DisplaySprite(#missordivoff,xordi, yordi+10+ymissille):; affiche le missile
FlipBuffers():; affiche l'ecran
Wend
DisplaySprite(#missordivoff,xordi, yordi+10+ymissille)
FlipBuffers():; affiche l'ecran
tir=0
EndIf
;
If valeur=4
copiy=yordi
While xordi-xmissille>30
xmissille+10
DisplaySprite(#missordih,xordi-20-xmissille,copiy ):; affiche le missile
DisplaySprite(#missordihoff,xordi-1-xmissille,copiy ):; efface le missile
FlipBuffers():; affiche l'ecran
Wend
;DisplaySprite(#missordihoff,xordi-xmissille,copiy )
;DisplaySprite(#missordihoff,xordi-xmissille-10,copiy )
DisplaySprite(#missordihoff,xordi-xmissille-20,copiy )
FlipBuffers():; affiche l'ecran
tir=0
EndIf
If valeur=2
copiy=yordi
While xordi+xmissille<760
xmissille+10
DisplaySprite(#missordih,xordi+20+xmissille,copiy ):; affiche le missile
DisplaySprite(#missordihoff,xordi+1+xmissille,copiy ):; efface le missile
FlipBuffers():; affiche l'ecran
Wend
;DisplaySprite(#missordihoff,xordi+xmissille,copiy )
; DisplaySprite(#missordihoff,xordi+xmissille+10,copiy )
DisplaySprite(#missordihoff,xordi+xmissille+20,copiy )
FlipBuffers():; affiche l'ecran
tir=0
EndIf
EndProcedure
;{message_gagne_perdu
message_gagne_perdu:
If toucheordi=1
toucheordi=0
MessageRequester("Tron", "Tron a perdu", #PB_MessageRequester_Ok )
ClearScreen(RGB(0, 0, 0)) :;efface l'ecran
scorehuman+1
Goto debut
EndIf
If touche=2
touche=0
MessageRequester("Tron", "Tron a Gagné", #PB_MessageRequester_Ok )
ClearScreen(RGB(0, 0, 0)) :;efface l'ecran
scoretron+1
Goto debut
EndIf
Return
;}
;{ assistance_mur :
assistance_mur :
If xjoueur-vitessejoueur<10 And Couleurjoueurg=0 And pos=4
pos=3
EndIf
If xjoueur-vitessejoueur<10 And Couleurjoueurd=0 And pos=4
pos=1
EndIf
If xjoueur-vitessejoueur>760 And Couleurjoueurg=0 And pos=2
pos=1
EndIf
If xjoueur-vitessejoueur>760 And Couleurjoueurd=0 And pos=2
pos=3
EndIf
;
If yjoueur-vitessejoueur<10 And Couleurjoueurg=0 And pos=1
pos=4
EndIf
If yjoueur-vitessejoueur<10 And Couleurjoueurd=0 And pos=1
pos=2
EndIf
If yjoueur-vitessejoueur>560 And Couleurjoueurg=0 And pos=3
pos=4
EndIf
If yjoueur-vitessejoueur>560 And Couleurjoueurd=0 And pos=3
pos=2
EndIf
Return
;}