Magus

(Wiremod Exp2Adv) Lodkagan Simple Snake

Jul 12th, 2015
470
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. // === VARIABLES
  2. // Color
  3. client color PlayerColor = color( 0, 0,255)
  4. client color TailColor = color(255,255,255)
  5. client color FruitColor = color(255, 0, 0)
  6.  
  7. // Map
  8. client vector2 Grid = vec2(32,32)
  9.  
  10. // Player
  11. client int Score = 0
  12. client int Direction = 1
  13. client vector2 PlayerPos = vec2(10,10)
  14. client table Tail
  15.  
  16. // Fruit
  17. client vector2 FruitPos = vec2(5,5)
  18.  
  19. // === FUNCTIONS
  20. client function void eatFruit() {
  21. Tail.insert(vec2(-100))
  22. FruitPos = randVec2(3,Grid.getX()-3)
  23. Score += 1+(#Tail)
  24. }
  25.  
  26. client function void movePlayer() {
  27. if(Direction == 0) {
  28. // UP
  29. PlayerPos += vec2(0, -1)
  30. } elseif(Direction == 1) {
  31. // RIGHT
  32. PlayerPos += vec2(1, 0)
  33. } elseif(Direction == 2) {
  34. // DOWN
  35. PlayerPos += vec2(0,1)
  36. } else {
  37. // LEFT
  38. PlayerPos += vec2(-1,0)
  39. }
  40. }
  41.  
  42. client function void resetGame() {
  43. if(Score) {
  44. print("Score: "+Score)
  45. }
  46. Direction = 1
  47. Score = 0
  48. FruitPos = randVec2(3,Grid.getX()-3)
  49. Tail = {}
  50. PlayerPos = Grid/2
  51. }
  52.  
  53. // === EVENTS
  54. client event drawScreen(int W, int H) {
  55. vector2 GridSize = vec2(W,H) / Grid
  56. vector2 PlayerPosOld = PlayerPos
  57.  
  58. // Get Player Input
  59. netReceive("Direction",
  60. function( netstream Stream ) {
  61. int Dir = Stream.readNumber()
  62.  
  63. if(Dir == 0 && Direction != 2) {
  64. Direction = Dir
  65. }elseif(Dir == 1 && Direction != 3) {
  66. Direction = Dir
  67. }elseif(Dir == 2 && Direction != 0) {
  68. Direction = Dir
  69. }elseif(Dir == 3 && Direction != 1) {
  70. Direction = Dir
  71. }
  72.  
  73. }
  74. )
  75.  
  76.  
  77. // Physics
  78. movePlayer()
  79. if(PlayerPos == FruitPos) {
  80. eatFruit()
  81. }
  82.  
  83. if(PlayerPos.getX() < 0 || PlayerPos.getX() > Grid.getX()) {
  84. resetGame()
  85. }
  86. if(PlayerPos.getY() < 0 || PlayerPos.getY() > Grid.getY()) {
  87. resetGame()
  88. }
  89.  
  90. for(int I=1; #Tail; 1) {
  91. if(PlayerPos == Tail[I,vector2]) {
  92. resetGame()
  93. }
  94. }
  95.  
  96. // Draw Fruit
  97. setDrawColor(FruitColor)
  98. drawBox(FruitPos*GridSize,GridSize)
  99.  
  100. // Draw Player
  101. setDrawColor(PlayerColor)
  102. drawBox(PlayerPos*GridSize,GridSize)
  103.  
  104. // Draw Tail
  105. if(#Tail) {
  106.  
  107. Tail.insert(PlayerPosOld)
  108. Tail.shift(1)
  109.  
  110. setDrawColor(TailColor)
  111. for(int I=1; #Tail; 1) {
  112. drawBox(Tail[I,vector2]*GridSize, GridSize)
  113. }
  114.  
  115. }
  116.  
  117. }
  118.  
  119. server event keypress(player P, int Key) {
  120. netstream Stream = stream()
  121. int Direction
  122.  
  123. if(Key == 17) {
  124. Stream.writeNumber(0)
  125. Stream.broadcast("Direction")
  126. } elseif(Key == 18) {
  127. Stream.writeNumber(2)
  128. Stream.broadcast("Direction")
  129. Direction = 1
  130. } elseif(Key == 19) {
  131. Stream.writeNumber(3)
  132. Stream.broadcast("Direction")
  133. } elseif(Key == 20) {
  134. Stream.writeNumber(1)
  135. Stream.broadcast("Direction")
  136. }
  137.  
  138. }
Advertisement
Add Comment
Please, Sign In to add comment