Code : Tout sélectionner
; Version Purebasic V4.00
; Tron creé Par Dobro V3.5.2 avec score (non sauvegardé)
; pour le sens j'ai choisi
; les touches fleché pour jouer
; il y a un mode assistance pour les bords
; si l'on ne touche a rien il ne va pas entrer
; en collision avec les bords du jeu !! :D
;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..
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()
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(40)
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+5, yordi-6) :;test en haut
Couleur2 = Point(xordi-16, yordi+5) :;test a gauche
Couleur3 = Point(xordi+15, yordi+5) :;test a droite
StopDrawing()
; DisplaySprite(#test, xordi+4, yordi)
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+15, yordi+5) :;test a droite
Couleur2 = Point(xordi+5, yordi-6) :;test en haut
Couleur3 = Point(xordi+5, yordi+16) :;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+5, yordi+15) :;test en bas
Couleur2 = Point(xordi+15, yordi+5) :;test a droite
Couleur3 = Point(xordi-6, yordi+5) :;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-6, yordi+5) :;test a gauche
Couleur2 = Point(xordi+5, yordi-6) :;test en haut
Couleur3 = Point(xordi+5, yordi+16) :;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
DisplaySprite(#ordi, xordi , yordi )
DisplaySprite(#joueur, xjoueur , yjoueur )
FlipBuffers():; affiche 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
;{-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
;}