Advertisement
Guest User

ISOMETRIC - G-ROM FOR AR-S

a guest
Aug 4th, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. InitSprite() : InitKeyboard()
  2.  
  3. #RESOLUTION_X = 800
  4. #RESOLUTION_Y = 600
  5.  
  6.  
  7. OpenWindow(0,0,0,#RESOLUTION_X,#RESOLUTION_Y,"")
  8. OpenWindowedScreen(WindowID(0),0,0,#RESOLUTION_X,#RESOLUTION_Y)
  9.  
  10.  
  11. Dim Level.c(5,5) ; niveau cartésien "normal"
  12.  
  13. Level(0,0) = 1 : Level(1,0) = 1 : Level(2,0) = 1 : Level(3,0) = 1 : Level(4,0) = 1
  14. Level(0,1) = 0 : Level(1,1) = 1 : Level(2,1) = 1 : Level(3,1) = 0 : Level(4,1) = 0  
  15. Level(0,2) = 0 : Level(1,2) = 1 : Level(2,2) = 1 : Level(3,2) = 0 : Level(4,2) = 0  
  16. Level(0,3) = 0 : Level(1,3) = 1 : Level(2,3) = 1 : Level(3,3) = 0 : Level(4,3) = 0  
  17. Level(0,4) = 1 : Level(1,4) = 1 : Level(2,4) = 1 : Level(3,4) = 1 : Level(4,4) = 1  
  18.  
  19. TARGET_X = 0
  20. TARGET_Y = 0
  21.  
  22. CreateSprite(0,64,64)
  23.  
  24. StartDrawing(SpriteOutput(0))
  25.   DrawingMode(#PB_2DDrawing_AlphaChannel)
  26.   Box(0,0,64,64,RGBA(255,0,0,0))
  27.   DrawingMode(#PB_2DDrawing_AlphaBlend)
  28.   LineXY(0,32,32,16,RGBA(255,255,255,255))
  29.   LineXY(32,16,64,32,RGBA(255,255,255,255))
  30.   LineXY(64,32,32,48,RGBA(255,255,255,255))
  31.   LineXY(32,48,0,32,RGBA(255,255,255,255))
  32. StopDrawing()
  33.  
  34. While #True
  35.  
  36.   Repeat
  37.     event = WindowEvent()
  38.     If event = #PB_Event_CloseWindow
  39.       End
  40.     EndIf
  41.   Until event = 0
  42.  
  43.   If Timer < ElapsedMilliseconds()
  44.     Timer = ElapsedMilliseconds() + 1000
  45.     TARGET_X + 1
  46.     If TARGET_X>4
  47.       TARGET_X=0
  48.       TARGET_Y+1
  49.     EndIf
  50.    
  51.     If TARGET_Y>4
  52.       TARGET_X=0
  53.       TARGET_Y=0
  54.     EndIf
  55.   EndIf
  56.        
  57.   ClearScreen(0)
  58.  
  59.   ; on calcule la cible (cartesian / isometrique)
  60.   ;
  61.   TARGET_ISO_X.f =  (TARGET_X - TARGET_Y) * (SpriteWidth(0)/2)
  62.   TARGET_ISO_Y.f = ((TARGET_X + TARGET_Y) / 2) * (SpriteHeight(0)/2)
  63.    
  64.  
  65.   ; affichage
  66.   ;
  67.   For y = 0 To 4
  68.     For x = 0 To 4
  69.      
  70.       ; On projete de cartesian a isometrique
  71.       iso_x.f = x - y
  72.       iso_y.f = (x+y) / 2
  73.      
  74.       ; on scale avec la taille du sprite
  75.       pos_iso_x.f = iso_x * (SpriteWidth(0)/2)
  76.       pos_iso_y.f = iso_y * (SpriteHeight(0)/2)
  77.      
  78.       ; on centre sur l'écran la map
  79.       offset_x = (#RESOLUTION_X/2) - TARGET_ISO_X
  80.       offset_y = (#RESOLUTION_Y/2) - TARGET_ISO_Y
  81.            
  82.       spriteOriginX = (SpriteWidth(0)/2)
  83.       spriteOriginY = (SpriteHeight(0)/2)
  84.      
  85.       final_x.f = (pos_iso_x - spriteOriginX) + offset_x
  86.       final_y.f = (pos_iso_y - spriteOriginY) + offset_y
  87.      
  88.      
  89.       If Level(x,y) = 1
  90.         DisplayTransparentSprite(0,final_x,final_y)
  91.         StartDrawing(ScreenOutput())
  92.           DrawText(final_x+20,final_y+24,Str(x)+":"+Str(y))
  93.         StopDrawing()
  94.         Else
  95.         DisplayTransparentSprite(0,final_x,final_y,64)
  96.         StartDrawing(ScreenOutput())
  97.           DrawText(final_x+20,final_y+24,Str(x)+":"+Str(y))
  98.         StopDrawing()
  99.       EndIf
  100.      
  101.     Next
  102.   Next
  103.    
  104.   StartDrawing(ScreenOutput())
  105.     DrawingMode(#PB_2DDrawing_Outlined)
  106.    Circle(#RESOLUTION_X/2,#RESOLUTION_Y/2,16,RGB(255,0,0))
  107.   StopDrawing()
  108.  
  109.   FlipBuffers()
  110. Wend
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement