0

コードとして JavaScript を使用して、初めてのソリティア ゲームを試みています。このプロジェクトのリソースとしてbrainjar.comを見つけましたが、これまでのところ非常に優れています. 私はこの方法で javascript について多くのことを学び、フォームに基づいていますが、ゲームの原始的なフォームを管理しました。きちんとしたものではありませんが、やや機能的です。

今だけ、行き詰まりました。

ボタンを押して「if else」チェックを試みるたびに、バーフします。ゲームのように、自分自身を完全にリセットすることを選択するか、まったく機能しません。どこかで何かを見落としているに違いないと思います。

ここにコードを投稿するには非常に混乱するでしょう (私は初心者であり、ずさんであることはわかっています) が、リンクはここにあります (警告、少しズームアウトする必要があるかもしれません)私はまだこのことを最適化していないので、ディスプレイ側で):

http://pluckzilla.com/game/clockgame.html

一番上の近くにある醜い緑色のボタンが呼び出す関数は次のとおりです。


//game play

//begin with 12

function twelve(){

hand12.combine(fingering);
fingering.addCard(hand12.deal());
display();


//and i need to figure out a way to make sure only the rank of queen is allowed in the stack.


}

ヘルプ?


要求に応じて詳細を追加する

//example on how to get the card objects to stack, and there are a lot of them. card   objects are in a separate js file

left = 0;
top  = 0;
el = document.getElementById("fingering");
while (el.firstChild != null)
el.removeChild(el.firstChild);
for (i = 0; i < fingering.cardCount(); i++) {
node = fingering.cards[i].createNode();
node.firstChild.style.visibility = "visible";
node.style.left = left + "em";
node.style.top  = top  + "em";
el.appendChild(node);
left += .20;
top  += 0.05;
} 

奇妙なことに、if が次のように設定されている場合、暗黙の「else」が行われているように見えます。

function twelve(){
if (fingering.cards[0].rank==="10")
hand12.combine(fingering);
fingering.addCard(hand12.deal());


display();

私が試した最初のカードは 10 で、カード交換は両方のスタック間でうまく機能しましたが、その後のカードは完全に交換されず、すぐにハンド 12 が空になり、最大 1 枚のカードしか持てないはずのフィンガリングが失敗しました。 5.

どうしたの?

ブラックジャック ゲームでプレーヤーのハンドにスコアを付けるために、brainjar が newArray を宣言したように見えますが、このゲームではスコアは実際には必要ありません。(中央のスタックにキングが 4 枚ある場合、ゲームは終了しますが、そのイベントのコードはまだ作成していません。)

javascriptに暗黙のelseのようなものはありますか?


そこでメサイアに声をかけてください。彼は私の脳をいくらか働かせ、問題の一部を解決させてくれました。カードが正しいカードではない場合、カード交換を完全に停止する方法を理解する必要があります。


いくつかのコードを追加しました..意図したとおりに動作します...

function twelve(){
if (fingering.cards[0].rank!=="10")
alert ("nonono");

if (fingering.cards[0].rank==="10")
hand12.combine(fingering); 
fingering.addCard(hand12.deal());
display();

しかし、==="10" バージョンでもその迷惑な暗黙の "else" 効果がまだ発生しているため、新しいコードは意味がありません: どのカードがチェックされているかに関係なく、最後の 2 行を実行します。何か案は?

4

1 に答える 1

0

あはは!

別の関数を宣言して 2 つのステップを 1 つにし、とにかく実行します。

 //begin with 12

 function twelve(){
 var card;
 if (fingering.cards[0].rank!=="10")
 alert ("nonono");

 if (fingering.cards[0].rank==="10")
 cardExchange();
 display();


 //and i need to figure out a way to make sure only the rank of queen is allowed in the stack.


 }
 function cardExchange(){
 hand12.combine(fingering); 
 fingering.addCard(hand12.deal());
 }
于 2013-08-02T23:37:37.550 に答える