PageRenderTime 46ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/haxetest/Jump.hx

http://github.com/gwillen/test
Haxe | 159 lines | 110 code | 36 blank | 13 comment | 4 complexity | 368e912780e22f073a84ecb05d975173 MD5 | raw file
Possible License(s): GPL-3.0
  1. import flash.events.Event;
  2. import flash.events.MouseEvent;
  3. import flash.display.Sprite;
  4. import flash.display.BitmapData;
  5. import flash.display.Bitmap;
  6. import flash.geom.Rectangle;
  7. import flash.geom.Point;
  8. typedef Coor = {
  9. var x : Int;
  10. var y : Int;
  11. }
  12. typedef Jmp = {
  13. var dest : Coor;
  14. var path : Array<Coor>;
  15. }
  16. class Jump extends Sprite {
  17. /*
  18. upone = jmp (0, -1) []
  19. uptwo = jmp (0,-2) [(0,-1)]
  20. upthree = jmp (0,-3) [(0,-1), (0,-2)]
  21. rightupone = jmp (1,-1) [(0,-1)]
  22. rightuptwo = jmp (1,-2) [(0,-1), (0,-2)]
  23. rightupthree = jmp (1,-3) [(0,-1), (0,-2), (0,-3)]
  24. */
  25. // read a jump from an array of coors. First coor is dest, rest are path.
  26. static function readjmp(a : Array<Coor>) : Jmp {
  27. if(a.length < 1 )
  28. { // bad input
  29. return {dest : {x:0,y:0}, path : []};
  30. }
  31. var d: Coor = a[0];
  32. return {dest : d, path : a.slice(1)};
  33. }
  34. static var u : Jmp = { dest : {x:0, y:-1}, path : [] } ;
  35. static var uu : Jmp = { dest : {x:0, y:-2}, path : [ {x:0,y:-1}] } ;
  36. static var uuu : Jmp = { dest : {x:0, y:-3}, path : [{x:0,y:-1},{x:0,y:-2}] } ;
  37. static var ru : Jmp = { dest: {x:1,y:-1}, path : [{x:0,y:-1}]};
  38. static var ruu : Jmp = { dest : {x:1,y:-2}, path : [{x:0,y:-1}, {x:0,y:-2}]};
  39. static var ruuu : Jmp = readjmp( [ {x:1,y:-3},{x:0,y:-1}, {x:0,y:-2}, {x:0,y:-3}]);
  40. static var rr = readjmp([ {x:2,y:0}, {x:1,y:0}]);
  41. static var rru = readjmp([ {x:2,y:-1}, {x:1,y:-1}]);
  42. static var rruu = readjmp([ {x:2,y:-2}, {x:0,y:-1}, {x:1,y:-2}]);
  43. static var rrr = readjmp([ {x:3,y:0}, {x:1,y:0}, {x:2,y:0}]);
  44. static var rrru = readjmp([ {x:3,y:0}, {x:1,y:-1}, {x:2,y:-1}]);
  45. static var rd = readjmp([{x:1,y:1},{x:1,y:0}]);
  46. static var rdd = readjmp([{x:1,y:2},
  47. {x:1,y:0},
  48. {x:1,y:1}]);
  49. static var rddd = readjmp([{x:1,y:3},
  50. {x:1,y:0},
  51. {x:1,y:1},
  52. {x:1,y:2}]);
  53. static var rdddd = readjmp([{x:1,y:4},{x:1,y:0},{x:1,y:1},{x:1,y:2},{x:1,y:3}]);
  54. static var rrd = readjmp([{x:2,y:1},
  55. {x:1,y:0}]);
  56. static var rrdd = readjmp([{x:2,y:2},
  57. {x:1,y:0},
  58. {x:2,y:1}]);
  59. static var rrddd = readjmp([{x:2,y:3},
  60. {x:1,y:0},
  61. {x:2,y:1},
  62. {x:2,y:2}]);
  63. static var rrrd = readjmp([{x:3,y:1},
  64. {x:1,y:0},
  65. {x:2,y:0}]);
  66. static var rrrdd = readjmp([{x:3,y:2},
  67. {x:1,y:0},
  68. {x:2,y:0},
  69. {x:3,y:1}]);
  70. static function reflectcoor(c : Coor): Coor {
  71. return {x: -c.x, y: c.y};
  72. }
  73. static function reflectjmp(j : Jmp): Jmp {
  74. var d = reflectcoor(j.dest);
  75. var p = j.path.copy();
  76. for(i in 0...p.length){
  77. p[i] = reflectcoor(j.path[i]);
  78. }
  79. return {dest : d, path : p};
  80. }
  81. static function arrmap<T>(a : Array<T>, f : T -> T) : Array<T> {
  82. var a1 = a.copy();
  83. for( i in 0...a.length){
  84. a1[i] = f(a[i]);
  85. }
  86. return a1;
  87. }
  88. static var rightjmps:Array<Jmp> = [ru,ruu,ruuu,rr,rru,rruu,rrr,rrru,
  89. rd,rdd,rddd,rdddd,rrd,rrdd,rrddd,rrrd,rrrdd];
  90. static var leftjmps:Array<Jmp> = arrmap(rightjmps, reflectjmp);
  91. static var jmps = rightjmps.concat(leftjmps).concat([u,uu,uuu]);
  92. static function stringofcoor(c : Coor){
  93. return ("(" + c.x + "," + c.y + ")");
  94. }
  95. static function stringofjmp(j : Jmp) {
  96. var d = ( "dest= " + stringofcoor(j.dest) + " path = ");
  97. for( i in 0...j.path.length) {
  98. d = d + (stringofcoor(j.path[i]) );
  99. }
  100. return d;
  101. }
  102. function new(inBitmap:BitmapData){
  103. super();
  104. stage.addEventListener(MouseEvent.MOUSE_DOWN, handleclick );
  105. trace("HEERE");
  106. }
  107. static function main() {
  108. trace ( stringofjmp(leftjmps[6] ));
  109. trace ("Hello world!" + jmps[0] + " " + "length=" + jmps.length );
  110. var mc:flash.display.MovieClip = flash.Lib.current;
  111. // type annotation not necessary
  112. mc.graphics.beginFill(0xFF0000);
  113. mc.graphics.moveTo(50,50);
  114. mc.graphics.lineTo(100,50);
  115. mc.graphics.lineTo(100,100);
  116. mc.graphics.lineTo(50,100);
  117. mc.graphics.endFill();
  118. mc.stage.addEventListener(MouseEvent.MOUSE_DOWN, handleclick );
  119. }
  120. }