• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javascriptの打ちミスしてる所を知りたい。)

JavaScriptで蛇を操作するゲームのタイプミスの修正方法

このQ&Aのポイント
  • JavaScriptで作成した蛇を操作するゲームで、タイプミスがあるため正常に動作しない問題が発生しています。
  • ゲームは参考書の通りに作成されており、蛇を上下左右キーで動かし、餌を食べさせるというルールですが、実際には灰色のイメージのみ表示され蛇は表示されません。
  • タイプミスの場所がわからず動作しない問題の解決方法を教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

>回答してくださった所を直してみたのですが、それでもだめでした。。。 どんな仕様なのかわからないから、ダメだったダメだった言われても何がダメなんだかわからない。 こういうところでプログラムの質問するときは、こうこうこうなるはずなんだけど、こうなってしまっている。 って書くようにしたほうがいいよ。 何を持ってF12でうんぬん言っているかわからないけど、 提示されたソースをコピーして実行したらエラー出てるじゃん。(Chromeで実行) まず初期状態。(行数は見やすくしたりしてるからちょっと違うかも。) ncaught SyntaxError: Unexpected end of input t.html:1 Uncaught ReferenceError: init is not defined t.html:112 SyntaxErrorとかinitが定義されて無いとか出たら大体かっこの相違。 ってことでインデントをつけてみていけばaddFoodの閉じかっこが無いことが見える。 なので}を入れる。 そうすると次に Uncaught TypeError: Cannot read property 'lenght' of undefined  t.html:47 47行目でエラー。 for(var i=0;i<data.lenght;i++){ dataにlengthなんてプロパティは無いって言われてる。なみせんとxが表示されている。 んじゃあそれが何かというとisHitの引数にdataがあるので呼び出し元を見てみる。 そうすると4か所から呼ばれているけど、その中のaddFoodで呼び出しているところの if(isHit(foods,x,y)|| isHit(snake.x,y)){ がおかしいことがわかる。 snakeを渡すはずなのにsnake.xを渡している。 なのでここをisHit(snake,x,y)に修正。 そうすると次は Uncaught TypeError: number is not a function t.html:41 41行目でエラーが表示される。 そこを見てみるとPointっていう関数名なのにpointでnewしようとしていることがわかるので foods.push(new Point(x,y)); とする。 そうすればエラーが出なくなるんだけど、それ以降、どういった動きになれば正解なのかは前途したように俺にはわからない。 同じ動きでエラー表示がどうなるか試してみて。 違うエラーが出たりするなら、何か修正を間違えている。

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • DoubtOwl
  • ベストアンサー率50% (63/124)
回答No.6

No.4の回答の通りに修正し、 tick()のswitch文のdefauleをdefaultに修正すれば想定通りの動きになるかと。

すると、全ての回答が全文表示されます。
  • tracer
  • ベストアンサー率41% (255/621)
回答No.5

一口にエラーといっても、それにはいろいろな種類があります。開発者ツールの設定によって、どういうエラーを表示するかが決まっているため、中には非表示にしているエラーもあるでしょう。まずは、開発者ツールの設定を確認してみてください。 また、「期待通りに動かない」 = 「エラー」ではありませんよ。 ブラウザの開発ツールは、あくまで構文エラーや通信エラーなど、エラーに属するものしか表示しません。たとえば、ある変数に1を設定しなければならない状況において、誤って2を設定してしまった場合は、それはエラーではないため、「エラー」は当然検出されません。構文的には正しいからです。 どんなIDE(エディタ)を使っても、最終的には開発者ツールでの確認が必要になるため、どうあっても開発者ツールは必須ですが、単純なタイポや構文エラーレベルであれば、市販のIDEの方が使いやすいかもしれません。 たとえば、webstormには、独自でフォーマットを指定して、それを自動で実行するオートフォーマット機能や、使っていない変数や初めて登場する変数へのカラーリファレンスなどが充実しています。英語のメニューですが、機能はかなり洗練されています。 http://news.mynavi.jp/column/ide/094/

参考URL:
https://www.jetbrains.com/webstorm/
すると、全ての回答が全文表示されます。
回答No.3

開発者ツールってあれよ、JavaScriptのデバッグとかできればいいだけだから使っているブラウザについてくるやつで十分だよ。 例えばfirefoxはいろんな機能をaddできる。開発するのにはおすすめ。 別にchromeのでもいいし、IEのでもいい。 というか、動かしたい環境で一通りデバッグしながら動かすのがおすすめ。 大体のブラウザはF12押せば起動する。 使い方は別途学んで。

nomnom20
質問者

補足

さきほど回答ありがとうございます。 回答してくださった所を直してみたのですが、それでもだめでした。。。 クロームを使っておりまして、それでF12を押せば起動するのはわかるのですが、 今回直してからF12を押してもエラーが出ません。 でも間違ってないわけがない。と思ってて、 ちゃんと参考書の使用通り動いてくれないので、、、 市販か、また別な何かじゃないとやっぱりだめなのかな~と思って質問しました。

すると、全ての回答が全文表示されます。
  • kawais070
  • ベストアンサー率52% (2242/4283)
回答No.2

> お勧めの開発ツールはありますか? Webブラウザに開発者ツールがオマケで付いているのを知らないのですか? IE、Firefox だったらF12キーを押すと出てきます。 Chrome、Operaなら Ctrl + Shift + I で。 個人的には、Chrome、Operaの開発者ツールが好みかな。

nomnom20
質問者

補足

それなんですが、クロームを使っててF12を押せばデバックできるってのは知ってるですが、 いざ、使ってもエラー出てこないのに、それでもできないってことが何度もありました。 今回もです。 やっぱり市販のじゃないとだめなのかな~って思って質問しました。

すると、全ての回答が全文表示されます。
回答No.1

とりあえず開発者ツールとか使ってくれ。 function addFood()の閉じかっこが無い。 }をisHitの前に。 これはきちんとインデントしてればわかる。 addFood内の if(isHit(foods,x,y)|| isHit(snake.x,y)){ は if(isHit(foods,x,y)|| isHit(snake,x,y)){ でしょ。snakeは配列。 同じくaddFood内の foods.push(new point(x,y)); は foods.push(new Point(x,y)); 大文字と小文字を注意。 それでエラーは無くなると思うけど動作するかまでは見てない。

nomnom20
質問者

補足

質問回答ありがとうございます。 お勧めの開発ツールはありますか? できればアードビーのように使うためには月々お金を払う感じのではなく、 完全に購入するタイプのやつ、

すると、全ての回答が全文表示されます。

関連するQ&A