JSを使って三目並べゲームを作る方法
今回は、JS を使用して三目並べゲームを作成する方法と、JS を使用して三目並べゲームを作成するための 注意点 について説明します。ここでは実際的なケースを見てみましょう。見て。
最近授業が終わったので、状況は次のとおりです:
1. 同じ行 (行、列、対角線) にあるチェスの駒は 2 つだけであり、勝つためにさらに一歩踏み出す限り、それらは両方とも自分のものです。次に、残りのポジションの重みが最高、2. 同じ行 (行、列、対角線) にあるチェスの駒は 2 つだけで、どちらも相手 (つまりプレイヤー) のものです。一歩進めばプレイヤーは成功します。私はブロックする必要があり、残りのポジションには二次的な重みが与えられます。 3. コンピューター側は後退するため、賢い場合は常にプレイヤー側をブロックする必要があります。したがって、連続するチェスの駒が 1 つだけで、それがプレイヤーの駒である場合は、重みがかかります。行内の他の位置はレベル 3 に設定されます。 4. レベル 4 の重み: あなた自身 (コンピューター側) のチェスの駒だけが並んでいます。 5. レベル 5 の権限: 相手の駒と自分の駒を含めて、同じ列にチェスの駒はありません。 実装すると、各位置のチェスの駒は ソース コードは次のとおりです:<html> <head> <meta charset="utf-8"> <title>井字棋</title> <script> //定义全局变量 var full=[[0,0,0],[0,0,0],[0,0,0]];//0表示null,1表示我下的,2表示电脑下的 var val=[[1,1,1],[1,1,1],[1,1,1]];//表示每个位置的权值 function judge(){ //检测是否有人赢 //行 for(var i=0;i<3;i++){ if(full[i][0]==full[i][1]&&full[i][1]==full[i][2]&&full[i][0]!=0){ if(full[i][0]==1){ window.alert("you win!"); return true; } else { window.alert("you lose"); return true; } } } //列 for(var i=0;i<3;i++){ if(full[0][i]==full[1][i]&&full[1][i]==full[2][i]&&full[0][i]!=0){ if(full[0][i]==1){ window.alert("you win!"); return true; } else { window.alert("you lose"); return true; } } } //主对角线 if(full[0][0]==full[1][1]&&full[1][1]==full[2][2]&&full[0][0]!=0){ if(full[0][0]==1){ window.alert("you win!"); return true; } else { window.alert("you lose"); return true; } } if(full[0][2]==full[1][1]&&full[2][0]==full[1][1]&&full[0][2]!=0){ if(full[0][2]==1){ window.alert("you win!"); return true; } else { window.alert("you lose"); return true; } } for(var i=0;i<3;i++){ for(var j=0;j<3;j++){ if(full[i][j]==0) return false;//说明还没结束 if(i==2&&j==2) {window.alert("平局!"); return true; } } } return false;//无结果 } function bn(i,j){ //如果已经下过,则无效 if(full[i][j]!=0){ return 0; }else{ //没下过 full[i][j]=1; num1=(i*3+j+1)+""; document.getElementById(num1).value="X"; if(judge()==true){ return; } ai();//切换 } } //重置权值: function resetValue(){ for(var i=0;i<3;i++){ for(var j=0;j<3;j++){ if(full[i][j]!=0) val[i][j]=0; else{ //看行和列: //最高权值 if(((full[0][j]+full[1][j]+full[2][j])==4)&&(full[0][j]*full[1][j]*full[2][j])==0 &&((full[0][j]-1)*(full[1][j]-1)*(full[2][j]-1))==-1) val[i][j]=val[i][j]+10000; if(((full[i][0]+full[i][1]+full[i][2])==4)&&(full[i][0]*full[i][1]*full[i][2])==0 &&((full[i][0]-1)*(full[i][1]-1)*(full[i][2]-1))==-1) val[i][j]=val[i][j]+10000; //次级权值 if(((full[0][j]+full[1][j]+full[2][j])==2)&&(full[0][j]*full[1][j]*full[2][j])==0 &&((full[0][j]-1)*(full[1][j]-1)*(full[2][j]-1))==0) val[i][j]=val[i][j]+1000; if(((full[i][0]+full[i][1]+full[i][2])==2)&&(full[i][0]*full[i][1]*full[i][2])==0 &&((full[i][0]-1)*(full[i][1]-1)*(full[i][2]-1))==0) val[i][j]=val[i][j]+1000; //三级权值(一排只有一个X) if(((full[0][j]+full[1][j]+full[2][j])==1)&&(full[0][j]*full[1][j]*full[2][j])==0 &&((full[0][j]-1)*(full[1][j]-1)*(full[2][j]-1))==0) val[i][j]=val[i][j]+10; if(((full[i][0]+full[i][1]+full[i][2])==1)&&(full[i][0]*full[i][1]*full[i][2])==0 &&((full[i][0]-1)*(full[i][1]-1)*(full[i][2]-1))==0) val[i][j]=val[i][j]+10; //四级权值(一排只有一个O) if(((full[0][j]+full[1][j]+full[2][j])==2)&&(full[0][j]*full[1][j]*full[2][j])==0 &&((full[0][j]-1)*(full[1][j]-1)*(full[2][j]-1))==1) val[i][j]=val[i][j]+5; if(((full[i][0]+full[i][1]+full[i][2])==2)&&(full[i][0]*full[i][1]*full[i][2])==0 &&((full[i][0]-1)*(full[i][1]-1)*(full[i][2]-1))==1) val[i][j]=val[i][j]+5; //五级权限(该行没有X或O) if(((full[0][j]+full[1][j]+full[2][j])==0)&&(full[0][j]*full[1][j]*full[2][j])==0 &&((full[0][j]-1)*(full[1][j]-1)*(full[2][j]-1))==-1) val[i][j]=val[i][j]+2; if(((full[i][0]+full[i][1]+full[i][2])==0)&&(full[i][0]*full[i][1]*full[i][2])==0 &&((full[i][0]-1)*(full[i][1]-1)*(full[i][2]-1))==-1) val[i][j]=val[i][j]+2; //主对角线:同上 if((i==0&&j==0)||(i==2&&j==2)||(i==1&&j==1)){ if(((full[0][0]+full[1][1]+full[2][2])==4)&&(full[0][0]*full[1][1]*full[2][2])==0 &&((full[0][0]-1)*(full[1][1]-1)*(full[2][2]-1))==-1) val[i][j]=val[i][j]+10000; //次级权值 if(((full[0][0]+full[1][1]+full[2][2])==2)&&(full[0][0]*full[1][1]*full[2][2])==0 &&((full[0][0]-1)*(full[1][1]-1)*(full[2][2]-1))==0) val[i][j]=val[i][j]+1000; //三级权值(一排只有一个X) if(((full[0][0]+full[1][1]+full[2][2])==1)&&(full[0][0]*full[1][1]*full[2][2])==0 &&((full[0][0]-1)*(full[1][1]-1)*(full[2][2]-1))==0) val[i][j]=val[i][j]+10; //四级权值(一排只有一个O) if(((full[0][0]+full[1][1]+full[2][2])==2)&&(full[0][0]*full[1][1]*full[2][2])==0 &&((full[0][0]-1)*(full[1][1]-1)*(full[2][2]-1))==1) val[i][j]=val[i][j]+5; //五级权值(该行没有X或O) if(((full[0][0]+full[1][1]+full[2][2])==0)&&(full[0][0]*full[1][1]*full[2][2])==0 &&((full[0][0]-1)*(full[1][1]-1)*(full[2][2]-1))==-1) val[i][j]=val[i][j]+2; } //副对角线(同上) if((i==0&&j==2)||(i==2&&j==0)||(i==1&&j==1)){ //一级 if(((full[0][2]+full[1][1]+full[2][0])==4)&&(full[0][2]*full[1][1]*full[2][0])==0 &&((full[0][2]-1)*(full[1][1]-1)*(full[2][0]-1))==-1) val[i][j]=val[i][j]+10000; //二级 if(((full[0][2]+full[1][1]+full[2][0])==2)&&(full[0][2]*full[1][1]*full[2][0])==0 &&((full[0][2]-1)*(full[1][1]-1)*(full[2][0]-1))==0) val[i][j]=val[i][j]+1000; //三级权值(一排只有一个X) if(((full[0][2]+full[1][1]+full[2][0])==1)&&(full[0][2]*full[1][1]*full[2][0])==0 &&((full[0][2]-1)*(full[1][1]-1)*(full[2][0]-1))==0) val[i][j]=val[i][j]+10; //四级权值(一排只有一个O) if(((full[0][2]+full[1][1]+full[2][0])==2)&&(full[0][2]*full[1][1]*full[2][0])==0 &&((full[0][2]-1)*(full[1][1]-1)*(full[2][0]-1))==1) val[i][j]=val[i][j]+5; //五级权值(该行没有X或O) if(((full[0][2]+full[1][1]+full[2][0])==0)&&(full[0][2]*full[1][1]*full[2][0])==0 &&((full[0][2]-1)*(full[1][1]-1)*(full[2][0]-1))==-1) val[i][j]=val[i][j]+2; } } } } } function ai(){ if(judge()==true){ return; } //挑选权值最大的 resetValue(); var mi=0,mj=0,temp=0; for(var i=0;i<3;i++) for(var j=0;j<3;j++){ if(val[i][j]>temp){ temp=val[i][j]; mi=i; mj=j; } } full[mi][mj]=2; num1=(mi*3+mj+1)+""; document.getElementById(num1).value="O"; if(judge()==true){ return; } } function lose(){ window.alert("you lose"); location.reload(); } </script> </head> <body> <h1 align=center> 井字棋</h1> <table border=2px bordercolor="blue"width="300"height="300" style="font-size:50 " align=center> <tr> <td><input type="button" id="1" Style="width:100px;height:100px;" value=" " onclick="bn(0,0)"/></td> <td><input type="button" id="2" Style="width:100px;height:100px;" value=" " onclick="bn(0,1)"/></td> <td><input type="button" id="3" Style="width:100px;height:100px;" value=" " onclick="bn(0,2)"/></td> </tr> <tr> <td><input type="button" id="4" Style="width:100px;height:100px;" value=" " onclick="bn(1,0)"/></td> <td><input type="button" id="5" Style="width:100px;height:100px;" value=" " onclick="bn(1,1)"/></td> <td><input type="button" id="6" Style="width:100px;height:100px;" value=" " onclick="bn(1,2)"/></td> </tr> <tr > <td><input type="button" id="7" Style="width:100px;height:100px;" value=" " onclick="bn(2,0)"/></td> <td><input type="button" id="8" Style="width:100px;height:100px;" value=" " onclick="bn(2,1)"/></td> <td><input type="button" id="9" Style="width:100px;height:100px;" value=" " onclick="bn(2,2)"/></td> </tr> </table> <p ><input type="button" style="position:relative;left:500px;top:5px;width:100px;height:50px;" value="重新开始" onclick="location.reload() "/> <input type="button" style="position:relative;left:550px;top:5px;width:100px;height:50px;" value="认 输" onclick="lose()"/> </p> <body> </html>
JS は最も単純な検索、並べ替え、重複排除アルゴリズムを実装します
以上がJSを使って三目並べゲームを作る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











ゲームは多くのリソースを消費するため、コンピューターの速度が低下するのが一般的です。ゲーム時の CPU 使用率を理解し、過負荷を避けることが重要です。したがって、適切な CPU 使用率を追跡することが、ゲーム体験をスムーズに保つための鍵となります。この記事では、ゲームの実行中に達成すべき適切な CPU 使用率について説明します。ゲーム中の CPU 使用率 CPU 使用率はプロセッサのワークロードの重要な指標であり、CPU のパフォーマンス仕様に依存します。一般に、より強力な CPU ほど使用率が高くなります。より多くのコアとスレッドを備えた CPU は、システム全体のパフォーマンスを向上させることができます。マルチスレッドのサポートは、CPU の潜在能力を最大限に引き出すのに役立ちます。ゲームでは、CPU 使用率はプロセッサー使用率に依存し、ゲームに影響を与える可能性があります。

ほぼすべてのゲームがオンラインになっている今日の状況では、ホーム ネットワークの最適化を無視することはお勧めできません。ほぼすべてのルーターには、ユーザーのゲーム体験を向上させるために設計された NATBoost および QoS 機能が装備されています。この記事では、NATBoost と QoS の定義、利点、欠点について説明します。ゲームの NATBoost と Qos、どちらが優れていますか? NATBoost は、ネットワーク アドレス変換ブーストとも呼ばれ、ルーターのパフォーマンスを向上させるためにルーターに組み込まれている機能です。これは、ゲーム デバイスとサーバーの間でデータが転送されるのにかかる時間であるネットワーク遅延を短縮するのに役立つため、ゲームにとって特に重要です。 NATBoostはルーター内のデータ処理方式を最適化することで、データ処理速度の高速化と遅延の低減を実現し、

Nvgpucomp64.dll が原因でゲームが頻繁にクラッシュする場合は、ここで提供される解決策が役立つ可能性があります。この問題は通常、グラフィック カード ドライバーが古いか破損していること、ゲーム ファイルが破損していることなどが原因で発生します。これらの問題を修正すると、ゲームのクラッシュに対処するのに役立ちます。 Nvgpucomp64.dll ファイルは、NVIDIA グラフィックス カードに関連付けられています。このファイルがクラッシュすると、ゲームもクラッシュします。これは通常、LordsofttheFallen、LiesofP、RocketLeague、ApexLegends などのゲームで発生します。 N の場合、Nvgpucomp64.dll が Windows PC 上のゲームをクラッシュさせる

2 月 23 日のこの Web サイトのニュースによると、NVIDIA は昨夜 NVIDIA アプリケーションを更新してリリースし、プレイヤーに新しい統合 GPU コントロール センターを提供し、プレイヤーはゲーム内フローティングによって提供される強力な記録ツールを通じて素晴らしい瞬間をキャプチャできるようになりました。窓。このアップデートでは、NVIDIA も RTXHDR 機能を導入しました。公式の紹介文はこのサイトに添付されています: RTXHDR は、ハイ ダイナミック レンジ (HDR) のゴージャスな視覚効果をゲームにシームレスに導入できる、AI を活用した新しいフリースタイル フィルターです。もともとHDRをサポートしています。この機能をさまざまな DirectX および Vulkan ベースのゲームで使用するには、HDR 互換モニターが必要です。プレーヤーが RTXHDR 機能を有効にすると、HD をサポートしていなくてもゲームが実行されます。

superpeople ゲームは、steam クライアントを通じてダウンロードできます。このゲームのサイズは約 28G です。ダウンロードとインストールには通常 1 時間半かかります。ここでは、具体的なダウンロードとインストールのチュートリアルを紹介します。グローバルクローズドテストへの新しい申請方法 1) Steamストア(Steamクライアントダウンロード)で「SUPERPEOPLE」を検索 2) 「SUPERPEOPLE」ストアページ下部にある「SUPERPEOPLEクローズドテストへのアクセスをリクエスト」をクリック 3) request accessボタン、Steamライブラリで「SUPERPEOPLECBT」ゲームが確認できます 4)「SUPERPEOPLECBT」内のインストールボタンをクリックしてダウンロード

AAA の傑作やモバイル ゲームを十分にプレイした友人の皆さん、子供の頃のコンピューター ゲームを追体験してみませんか?それでは、Windows 11 のスパイダー ソリティアを一緒に探してみましょう!インターフェイスの [スタート] メニューをクリックし、[すべてのアプリ] ボタンをクリックし、[すべてのアプリ] をクリックします。 Microsoft のソリティア シリーズ ゲーム アプリケーションである「MicrosoftSolitaireCollection」を見つけて選択します; ソリティア シリーズ ゲームの選択。ロードが完了したら、選択インターフェイスに入り、「スパイダー ソリティア」を見つけて、「スパイダー ソリティア」を選択します。インターフェースは若干変更されていますが、以前と同じです。
![Thrustmaster コントロール パネルが動作しない、または正しく表示されない [修正済み]](https://img.php.cn/upload/article/000/887/227/170831073283375.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
Thrustmaster は、ゲーム ホイールやその他のゲーム アクセサリの製造を専門とする会社で、そのホイール製品はゲーム コミュニティで非常に人気があります。 Thrustmaster ホイール設定は、Thrustmaster コントロール パネルを使用してインストールおよび調整できます。コントロール パネルが動作しない、または表示されないという問題が発生した場合、ゲーム体験に影響を与える可能性があります。したがって、この問題が発生した場合は、接続が正常であるかどうかを確認し、ソフトウェア ドライバーが正しくインストールされ、最新バージョンに更新されていることを確認する必要があります。さらに、考えられる障害を解決するために、デバイスの再起動やデバイスの再接続を試みることもできます。問題が発生した場合は、Thrustmaster の公式 Web サイトを参照するか、カスタマー サービスにお問い合わせください。スラストマへのアクセス方法

4月20日の当サイトのニュースによると、ASUSは最近、Intelの第13/14世代プロセッサでゲームを実行する際のクラッシュなどの不安定性を改善するBIOSアップデートをリリースしたとのこと。同サイトは以前、バンダイナムコの格闘ゲーム「鉄拳8」のPCデモ版を実行すると、コンピュータに十分なメモリとビデオメモリがある場合でもシステムがクラッシュし、メモリ不足を示すエラーメッセージが表示されるなどの問題がプレイヤーから報告されたと報告していた。同様のクラッシュの問題は、「バトルフィールド 2042」、「レムナント 2」、「フォートナイト」、「ロード オブ ザ フォールン」、「ホグワーツ レガシー」、「ザ ファイナル」などの多くのゲームでも発生しています。 RADは今年2月に長い記事を公開し、ゲームクラッシュの問題はBIOS設定、高いクロック周波数、Intelプロセッサの高い消費電力の組み合わせであると説明した。
