JavaScriptっぽい。

『JavaScriptっぽい。』の更新情報やJavaScriptに関する日記。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告|
  3. トラックバック(-)|
  4. コメント(-)

トランプ3枚当て用スクリプト(その2)

10月26日正解発表分用に作ったやつ。 微妙にお利巧になったかな…

アルゴリズムを考えていったん「できた!」と思っても、後で見直して見ると見落としがあったりして、やっぱり難しいっす。 でも、いい頭の体操にはなるのでこれからも続けようかなと。 何事もやり続けると慣れてくるしね。


<script type="text/javascript">
/*
*1.1枚目 + 2枚目 = 奇数
*2.1枚目と3枚目のマークは同じ
*3.3枚目の数字は絵札
*4.3枚目 - 2枚目 = 2ケタ
*5.クラブは今回も使用
	1.1枚目の記号と数字はランダム
	2.1枚目がクラブでなければ2枚目はクラブ、1枚目がクラブなら2枚目はランダム
	3.3枚目の記号は1枚目と同一
	4.2枚目の数字は[1,2,3]のいずれかで、1枚目が奇数なら2、1枚目が偶数なら1か3
	5.2枚目が1なら3枚目は[11,12,13]のいずれか
	6.2枚目が2なら3枚目は[12,13]のいずれか
	7.2枚目が3なら3枚目は13
	8.1枚目が11か13のとき必然的に2枚目は2になる。
*/

Array.prototype.shuffle = function(){
	return this [ Math.floor ( Math.random() * this.length ) ];
}

function choice_card(){
	var Mark = ["heart","dia","spade","club"];		
	var heart = [1,2,3,4,5,6,7,8,9,10,11,12,13];
	var dia = [1,2,3,4,5,6,7,8,9,10,11,12,13];
	var spade = [1,2,3,4,5,6,7,8,9,10,11,12,13];
	var club = [1,2,3,4,5,6,7,8,9,10,11,12,13];			
	var card = [];
	
	var first_mark = Mark.shuffle();
	var first_num = eval ( first_mark + ".shuffle()" );
	card[0] = first_mark + first_num;

	var second_mark = ( first_mark != "club" ) ? "club" : Mark.shuffle();
	var second_array = [1,3];
	var second_num = ( first_num%2 == 1 ) ? 2 : second_array.shuffle();
	card[1] = second_mark + second_num;

	var third_mark = first_mark;
	var third_array;
	if( second_num == 1 ) third_array = [11,12,13];
	if ( first_num == 11 || second_num == 2 ) third_array = [12,13];
	else if ( first_num == 12 && second_num == 1 ) third_array = [11,13];
	//else if ( first_num == 13 && second_num == 1 ) third_array = [11,12];		/*ありえない条件式*/
	third_num = ( second_num == 3 ) ? 13 : third_array.shuffle();		//second_numが3ならfirst_numは13にはならないので、だぶらない
	card[2] = third_mark + third_num;
	return card.join(",");
	
}

var choiced_card = [];
choiced_card[choiced_card.length] = choice_card();
choiced_card[choiced_card.length] = choice_card();
choiced_card[choiced_card.length] = choice_card();
choiced_card[choiced_card.length] = choice_card();
choiced_card[choiced_card.length] = choice_card();
choiced_card[choiced_card.length] = choice_card();
choiced_card[choiced_card.length] = choice_card();
choiced_card[choiced_card.length] = choice_card();
choiced_card[choiced_card.length] = choice_card();
choiced_card[choiced_card.length] = choice_card();
choiced_card[choiced_card.length] = choice_card();
choiced_card[choiced_card.length] = choice_card();
choiced_card[choiced_card.length] = choice_card();
choiced_card[choiced_card.length] = choice_card();
choiced_card[choiced_card.length] = choice_card();

var joint_array = choiced_card.join("<br>");
document.write ( joint_array );

</script>
スポンサーサイト
  1. 2005/10/31(月) 22:54:22|
  2. トランプ3枚当て|
  3. トラックバック:0|
  4. コメント:0

フレーム越しフローティングメニュー

久々にフレーム越しフローティングメニューを修正しました。

変数や関数名の付け方が当時と今ではかなり違ってきていますが、直すと大変なので識別子は元のままです。 前よりも微妙にお利口になっている感じはしますが、IEだとまだ問題があります。 IEがposition:fixedに対応していれば、かなり簡単になるんですけどね。 あと、addEventListenerもね。

  1. 2005/10/20(木) 22:50:23|
  2. 更新情報|
  3. トラックバック:0|
  4. コメント:0

トランプ3枚当て用スクリプト

トランプ3枚当てる携帯用懸賞サイトがある。 広告をクリックするとポイントがもらえて、そのポイントの数だけ賭けられるのだが、同時にヒントも最大5つまでもらえる。

そのヒントを満たしつつランダムにカードを予想するようなものをJavaScriptで作ってみたいと思っていたが、いざ作ろうとするとなかなかやっかいだ。 だいたいヒントの日本語もあいまいで、例えば「3枚のうち2枚は同じ数字」という場合3枚とも同じ場合も含まれるのかとか、「どれかの数字で7を使用」という場合は1枚だけという意味が含まれるのかなど、つまらないことで悩んでしまったりもする。

とはいえ、10月12日正解発表分のものを作ってみたので、今後はこれを基にしてまた作ってみようかな…


<script type="text/javascript">
/*
*1.すべて2で割り切れない
*2.すべて違うマーク
*3.3枚のうち2枚は同じ数字
*4.クラブは使っていない
*5.どれかの数字で7を使用
	1.クラブ以外のマークの配列を用意
	2.それぞれのマークの1~13までの奇数の配列を用意
	3.同じ数字が2個なので、1回目と2回目の数字が同じでない場合、1回目か2回目の数字は7でなくてはならない。
	4.1回目と2回目の数字が同じでない場合、3回目の数字は1回目の数字か2回目の数字となるため、その数字を格納する
	  配列last_arrayを用意
	5.1回目も2回目も7でない場合、3回目は7になる。
	6.1回目が7でなく、2回目の数字が1回目と一致しない場合は2回目の数字に7を入れているので、
	 必然的に1回目も2回目も7でない場合は、1回目と2回目の数字は同一となる。
*/
var Mark = ["heart","dia","spade"];		//1.
var heart = [1,3,5,7,9,11,13];
var dia = [1,3,5,7,9,11,13];
var spade = [1,3,5,7,9,11,13];			//2.
var last_array = [];		//4.
function choice_card(times){
	var random_num , first_num ;
	var first_mark = Mark [ random_num = (Math.floor ( Math.random() * Mark.length ) ) ];
	Mark.splice ( random_num , 1 );
	if ( times < 3 || last_array[0] == last_array[1] ) {
		first_num = eval ( first_mark + "[ Math.floor ( Math.random() *" + first_mark + ".length ) ]" );
		if ( times == 2 && last_array[0] != 7 && last_array[0] != first_num ) first_num = 7 ;		//3.6.
		if ( times < 3 ) last_array.push ( first_num );			//4.
	}
	else first_num = last_array [ Math.floor ( Math.random() * last_array.length )];
	if ( times == 3 ){
		if ( last_array[0] != 7 && last_array[1] != 7 )	first_num = 7 ;		//5.6.
		last_array = [];
		Mark = ["heart","dia","spade"];
	}	
	
	var first_card = first_mark + first_num;
	return first_card;
}
var choiced_card = [];
choiced_card[choiced_card.length] = [choice_card(1),choice_card(2),choice_card(3)];
choiced_card[choiced_card.length] = [choice_card(1),choice_card(2),choice_card(3)];
choiced_card[choiced_card.length] = [choice_card(1),choice_card(2),choice_card(3)];
choiced_card[choiced_card.length] = [choice_card(1),choice_card(2),choice_card(3)];
choiced_card[choiced_card.length] = [choice_card(1),choice_card(2),choice_card(3)];
choiced_card[choiced_card.length] = [choice_card(1),choice_card(2),choice_card(3)];
choiced_card[choiced_card.length] = [choice_card(1),choice_card(2),choice_card(3)];
choiced_card[choiced_card.length] = [choice_card(1),choice_card(2),choice_card(3)];
choiced_card[choiced_card.length] = [choice_card(1),choice_card(2),choice_card(3)];
choiced_card[choiced_card.length] = [choice_card(1),choice_card(2),choice_card(3)];

var joint_array = choiced_card.join("<br>");
document.write ( joint_array );

</script>
  1. 2005/10/18(火) 23:23:10|
  2. トランプ3枚当て|
  3. トラックバック:0|
  4. コメント:0

PUREST

09 | 2005/10 | 11
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -

Recent Entries

Recent Comments

Recent Trackbacks

Archives

Category

Links

Search

Recommend

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。