mixster

ManFlardin

Mar 3rd, 2010
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.76 KB | None | 0 0
  1. type
  2. PlayerClass = record
  3. x,y, speed: longint;
  4. w,h, rLeft, rRight, rTop, rBottom,dir, jump, acc, dec: integer;
  5. falling: boolean;
  6. end;
  7.  
  8. var mlevel: {array [0..2] of }array [0..160] of array [0..60] of integer;
  9. tileset, mainChar: integer;
  10. player: PlayerClass;
  11.  
  12. procedure CreatePlayer;
  13. begin
  14. player.x := 0;
  15. player.y := 0;
  16. player.speed := 1;
  17. player.w := 32;
  18. player.h := 32;
  19. player.dir := 0; //left, right, up, down
  20. player.jump := 0;
  21. player.falling := true;
  22. player.acc := 4
  23. player.dec := 8;
  24. end;
  25.  
  26. procedure DrawPlayer(players: Playerclass; buffer, sprite: integer; offsetX, offsetY: longint);
  27. begin
  28. if (players.dir = 0) then
  29. // masked_blit(sprite, buffer, (int)frame*32, 0, x - offsetX, y - offsetY, w, h)
  30. else
  31. // masked_blit(sprite, buffer, (int)frame*32, 32, x - offsetX, y - offsetY, w, h);
  32. end;
  33.  
  34. procedure UpdatePlayer;
  35. begin
  36. if player.falling then
  37. begin
  38. if (airTime < 20) then
  39. inc(airTime);
  40. y := y + airTime/10;
  41. end;
  42. if jumping then
  43. begin
  44. inc(jumpTime);
  45. if (jumpTime >= jumpMax) then
  46. begin
  47. jumping := false;
  48. end else
  49. y := y - (7 - jumpTime/5);
  50. end;
  51. end;
  52.  
  53. procedure Jump;
  54. begin
  55. if not(jumping and falling) then
  56. begin
  57. jumping := true;
  58. jumpTime := 0;
  59. end else if (jumping and not doubleJumping and (jumpTime >= jumpMax/2)) then
  60. begin
  61. doubleJumping := true;
  62. jumpTime := 0;
  63. end;
  64. end;
  65.  
  66. procedure Move(players: PlayerClass; direction:integer);
  67. begin
  68. dir := direction;
  69. NextFrame();
  70. if (direction = LEFT) then
  71. x := x - speed;
  72. else if (direction = RIGHT) then
  73. x := x + speed;
  74. end;
  75.  
  76. procedure NextFrame;
  77. begin
  78. frame := frame + 0.1;
  79. if (frame > 3) then
  80. frame := 0;
  81. end;
  82.  
  83. procedure DrawLayers(buffer, tileset: integer; offsetX, offsetY: longint);
  84. var i, e: integer;
  85. begin
  86. end;
  87.  
  88. procedure LoadMap(filename: string);
  89. var i,e,a: integer;
  90. level: string;
  91. begin
  92. if FileExists(filename) then
  93. ReadFileString(OpenFile(filename, false), level, FileSize(OpenFile('', false)));
  94. for i := 0 to length(level) do
  95. begin
  96. if level[i] = 'n' then
  97. begin
  98. inc(e);
  99. a := 0;
  100. SetArrayLength(mlevel, GetArrayLength(mlevel) + 1);
  101. end else
  102. begin
  103. SetArrayLength(mlevel, GetArrayLength(mlevel) + 1);
  104. mLevel[e][a] := strtoint(level[i]);
  105. inc(a);
  106. end;
  107. end;
  108. end;
  109.  
  110. function CheckCollision(players: PlayerClass; direction: integer): boolean;
  111. begin
  112. end;
  113.  
  114. Procedure FixTile(players: PlayerClass);
  115. begin
  116. end;
  117.  
  118. Procedure Update(players: PlayerClass; offsetX, offsetY: longint);
  119. begin
  120. end;
  121.  
  122. procedure Input;
  123. var i: integer;
  124. begin
  125. for i := 0 to 127 do
  126. if IsKeyDown(chr(i)) then
  127. begin
  128. if ord('d') = i then
  129. begin
  130. if not CheckCollision(player, LEFT) then
  131. Move(LEFT);
  132. end else if ord('a') = i then
  133. begin
  134. if not CheckCollision(player, RIGHT) then
  135. Move(RIGHT);
  136. end;
  137. if ord('s') = i then
  138. player.Jump();
  139. if ord('w') = i then
  140. player.y := player.y + 2.0;
  141. end;
  142. end;
  143.  
  144.  
  145. procedure main;
  146. var offsetX, offsetY: longint;
  147. done: boolean;
  148. begin
  149. if fileexists(scriptpath + 'tiles.bmp') then
  150. tileset := loadbitmap(scriptpath + 'tiles.bmp');
  151. if fileexists(scriptpath + 'char.bmp') then
  152. mainChar := loadbitmap(scriptpath + 'char.bmp');
  153. while not done do
  154. begin
  155. if IsFKeyDown(4) then
  156. done := true;
  157. Input;
  158.  
  159. //collision with player
  160. player.falling = not CheckCollision(player, DOWN, mlevel);
  161.  
  162. if player.jumping and CheckCollision(player, UP, mlevel) then
  163. player.jumping = false;
  164. FixTile(player, mlevel);
  165. Update(offsetX, offsetY, player);
  166. end;
  167. end;
Add Comment
Please, Sign In to add comment