え〜〜い!いっそうのこと、ブロック崩しを作れ!
きっと長くなるなぁ〜!そして、これは作りかけ&暇なときにやります!きっと
//@cc_on //___ //計算時間のかかる sin, cos をテーブルにして関数化 var Math2 = new Function ( ) { var sinTable = [ ]; var cosTable = [ ]; var radian = Math.PI / 180; var d, t; for( d = 0; d < 360; d++ ) { t = d * radian; sinTable[ d ] = Math.sin( t ); cosTable[ d ] = Math.cos( t ); } this.sinDegree = function ( deg ) { return sinTable[ deg % 360 |0 ]; }; this.cosDegree = function ( deg ) { return cosTable[ deg % 360 | 0 ]; }; this.randomInt = function ( num ) { return Math.random() * num | 0; }; }; //___ //移動物体を定義する var MovingParts = new Function; //移動部品の状態を設定 MovingParts.prototype.set = function ( position, vctor, timing ) { this.position = position || { x: 0, y: 0 }; this.vector = vector || { v: 0, s: 0 }; this.timing = timing || 25; this.scale = this.timing / 10; }; //状態を返す MovingParts.prototype.get = function ( ) { return { position: this.position, vector: this.vector }; }; //物体に運動を与える MovingParts.prototype.attack = function ( vector ) { var v = this.vector; if( 0 == v.s |0 ) this.start(); else { this.vector.s += vector.s || 0; if( 0 < v.v - vector.v ) this.vector.v += 180 + ( 90 - v.v + vector.v ) * 2; else this.vector.v += 180 - ( 90 - v.v + vector.v ) * 2; } }; MovingParts.prototype.start = function ( ) { if( this.tmid === null ) this.tmid = setInterval( (function ( that ) { return function ( ) { that.move(); }; })( this ), this.timing ); }; MovingParts.prototype.stop = function ( ) { clearInterval( this.tmid ); this.tmid = null; }; MovingParts.prototype.move = (function( sin, cos ) { return function ( ) { if( 0 == this.vector.s | 0 ) { this.stop(); this.vector.s = 0; } else { this.position.x += sin( this.vector.v ) * this.vector.s * this.scale; this.position.y += cos( this.vector.v ) * this.vector.s * this.scale; } return this.position; }; })( Math2.sinDegree, Math2.cosDegree, Math2.randomInt ) //___ var Coart = function( x, y ) { this.x = x; this.y = y; }; Coart.prototype.isOutSide = function ( p ) { if( p.y < 0 ) return 1; if( this.x < p.x ) return 2; if( this.y < p.y ) return 3; if( p.x < 0 ) return 4; return 0; }; //___ //ラケットもボールも「動く物」と考えてしまえば、 動くところだけ、付け足せばいいのかも?! var Ball = new Function; Ball.prototype = new MovingParts; Ball.prototype.constructor = Ball; //___ var Racket = new Function; Racket.prototype = new MovingParts; Racket.prototype.constructor = Racket;