1. import java.util.*;
  2.  
  3. class PlayerClassText
  4. {
  5. public String generate(ProgramGUI gui)
  6. {
  7. LinkedList<GameLevel> levelsList = gui.levelsList;
  8. GameData data = gui.data;
  9. int speed = data.playerSpeed;
  10. int jumpspeed = data.playerJumpSpeed;
  11. double gravity = data.gravity;
  12. String ln = System.getProperty("line.separator");
  13. String code = ""+ln+
  14. "package"+ln+
  15. " {"+ln+
  16. " import flash.display.MovieClip;"+ln+
  17. " import flash.ui.Keyboard;"+ln+
  18. " import flash.utils.setInterval;"+ln+
  19. " import flash.utils.clearInterval;"+ln+
  20. " "+ln+
  21. " public class playerclass"+ln+
  22. " {"+ln+
  23. " public var sprite:MovieClip;"+ln+
  24. " public var x:Number;"+ln+
  25. " public var y:Number;"+ln+
  26. " public var width:Number;"+ln+
  27. " public var height:Number;"+ln+
  28. " public var vspeed:Number;"+ln+
  29. " public var overfloor:Boolean;"+ln+
  30. " public var visible:Boolean;"+ln+
  31. " public var myimage:String;"+ln+
  32. " public var objecttype:Number;"+ln+
  33. " public var dir:Boolean;"+ln+
  34. " public var intid:uint;"+ln+
  35. " public function playerclass(xx:Number,yy:Number)"+ln+
  36. " {"+ln+
  37. " create(xx,yy);"+ln+
  38. " intid = setInterval(step,17);"+ln+
  39. " }"+ln+
  40. " public function destroy():void"+ln+
  41. " {"+ln+
  42. " clearInterval(intid);"+ln+
  43. " }"+ln+
  44. " private function create(xx:Number,yy:Number):void"+ln+
  45. " {"+ln+
  46. " objecttype = 0;"+ln+
  47. " x = xx;"+ln+
  48. " y = yy;"+ln+
  49. " width = 32;"+ln+
  50. " height = 32;"+ln+
  51. " overfloor = false;"+ln+
  52. " vspeed = 0;"+ln+
  53. " myimage = \"img_player\";"+ln+
  54. " visible = true;"+ln+
  55. " dir = false;"+ln+
  56. " }"+ln+
  57. " private function check_rectangle(xx:Number,yy:Number,ww:Number,hh:Number,xx2:Number,yy2:Number,ww2:Number,hh2:Number):Boolean"+ln+
  58. " {"+ln+
  59. " var l1:Number = xx;"+
  60. " var r1:Number = xx+ww;"+
  61. " var t1:Number = yy;"+
  62. " var b1:Number = yy+hh;"+
  63. " var l2:Number = xx2;"+
  64. " var r2:Number = xx2+ww2;"+
  65. " var t2:Number = yy2;"+
  66. " var b2:Number = yy2+hh2;"+
  67. " if(l2 < r1)"+
  68. " if(r2 > l1)"+
  69. " if(t2 < b1)"+
  70. " if(b2 > t1)"+
  71. " return true;"+
  72. " return false;"+
  73. " }"+ln+
  74. " private function place_free(xx:Number,yy:Number):Boolean"+ln+
  75. " {"+ln+
  76. " var i:Number = 0;"+ln+
  77. " var retval:Boolean = true;"+ln+
  78. " for(i=0;i<flashmain._root.objarray.length;i+=1)"+ln+
  79. " {"+ln+
  80. " var e:Object = flashmain._root.objarray[i];"+ln+
  81. " if (e.objecttype == 2)"+ln+
  82. " {"+ln+
  83. " if (check_rectangle(xx,yy,width,height,e.x,e.y,e.width,e.height)==true)"+ln+
  84. " retval = false;"+ln+
  85. " }"+ln+
  86. " }"+ln+
  87. " return retval;"+ln+
  88. " }"+ln+
  89. " private function object_collide(xx:Number,yy:Number):Object"+ln+
  90. " {"+ln+
  91. " var i:Number = 0;"+ln+
  92. " var retval:Object = null;"+ln+
  93. " for(i=0;i<flashmain._root.objarray.length;i+=1)"+ln+
  94. " {"+ln+
  95. " var e:Object = flashmain._root.objarray[i];"+ln+
  96. " if (e.objecttype == 2)"+ln+
  97. " {"+ln+
  98. " if (check_rectangle(xx,yy,width,height,e.x,e.y,e.width,e.height)==true)"+ln+
  99. " {"+ln+
  100. " retval = e;"+ln+
  101. " break;"+ln+
  102. " }"+ln+
  103. " }"+ln+
  104. " }"+ln+
  105. " return retval;"+ln+
  106. " }"+ln+
  107. " private function step():void"+ln+
  108. " {"+ln+
  109. " if (flashmain._root.isKeyDown(Keyboard.LEFT)) "+ln+
  110. " {"+ln+
  111. " dir = false;"+ln+
  112. " if ((x-"+speed+" >= 0) && place_free(x-"+speed+",y))"+ln+
  113. " {"+ln+
  114. " x -= "+speed+";"+ln+
  115. " if ((x >= flashmain._root.view_wview/2) && (x < flashmain._root.room_width-flashmain._root.view_wview/2))"+ln+
  116. " flashmain._root.view_xview = x-flashmain._root.view_wview/2;"+ln+
  117. " }"+ln+
  118. " }"+ln+
  119. " if (flashmain._root.isKeyDown(Keyboard.UP) && (!place_free(x,y+1)) && (place_free(x,y-1)))"+ln;
  120. if (jumpspeed < 0)
  121. code += " vspeed = "+Math.abs(jumpspeed)+";"+ln;
  122. else
  123. code += " vspeed = -"+(jumpspeed)+";"+ln;
  124. code += " if (flashmain._root.isKeyDown(Keyboard.RIGHT)) "+ln+
  125. " {"+ln+
  126. " dir = true;"+ln+
  127. " if ((x+"+speed+" <= flashmain._root.room_width-32) && place_free(x+"+speed+",y))"+ln+
  128. " {"+ln+
  129. " x += "+speed+";"+ln+
  130. " if ((x >= flashmain._root.view_wview/2) && (x < flashmain._root.room_width-flashmain._root.view_wview/2+4))"+ln+
  131. " flashmain._root.view_xview = x-flashmain._root.view_wview/2;"+ln+
  132. " }"+ln+
  133. " }"+ln+
  134. " if (place_free(x,y+1))"+ln+
  135. " vspeed += "+gravity+";"+ln+
  136. " y += vspeed;"+ln+
  137. " if (!place_free(x,y+1))"+ln+
  138. " {"+ln+
  139. " vspeed = 0;"+ln+
  140. " var obj1:Object;"+ln+
  141. " obj1 = object_collide(x,y+1);"+ln+
  142. " if (obj1!=null)"+ln+
  143. " {"+ln+
  144. " if (obj1.objecttype == 2)"+ln+
  145. " {"+ln+
  146. " if (y < obj1.y)"+ln+
  147. " y = obj1.y-32;"+ln+
  148. " else"+ln+
  149. " y = obj1.y+32;"+ln+
  150. " }"+ln+
  151. " }"+ln+
  152. " }"+ln+
  153. " var obj2:Object;"+ln+
  154. " obj2 = object_collide(x,y);"+ln+
  155. " if (obj2!=null)"+ln+
  156. " {"+ln+
  157. " if (obj2.objecttype == 4)"+ln+
  158. " {"+ln+
  159. " flashmain._root.score += 1;"+ln+
  160. " }"+ln+
  161. " }"+ln+
  162. " if (visible == true)"+ln+
  163. " {"+ln+
  164. " flashmain._root[myimage].y = y-flashmain._root.view_yview;"+ln+
  165. " if (dir==false)"+ln+
  166. " {"+ln+
  167. " flashmain._root[myimage].x = x-flashmain._root.view_xview+32;"+ln+
  168. " flashmain._root[myimage].scaleX = -1;"+ln+
  169. " }"+ln+
  170. " else"+ln+
  171. " {"+ln+
  172. " flashmain._root[myimage].x = x-flashmain._root.view_xview;"+ln+
  173. " flashmain._root[myimage].scaleX = 1;"+ln+
  174. " }"+ln+
  175. " }"+ln+
  176. " else"+ln+
  177. " {"+ln+
  178. " flashmain._root[myimage].visible = false;"+ln+
  179. " }"+ln+
  180. " }"+ln+
  181. " }"+ln+
  182. " }"+ln;
  183. return code;
  184. }
  185. }