ホームページ >ウェブフロントエンド >H5 チュートリアル >テトリスの原則と具体的な手順の HTML5 JS 実装_html5 チュートリアルのスキル

テトリスの原則と具体的な手順の HTML5 JS 実装_html5 チュートリアルのスキル

WBOY
WBOYオリジナル
2016-05-16 15:48:311804ブラウズ
このゲームの実装の基本原則:

ゲーム領域は、限られたサイズの領域です。各長方形は 21×25 個あります。幅は 10 単位、高さは 6 単位です (キャンバスの絶対単位はピクセルではなく固定です)。

対応するデータと動作を含む RusBlock クラスを作成し、ゲーム領域にマークされた四角形を記録する 2 次元配列 aState[21][25] を作成します。

テトリスには 7 つのパーツがあり、各パーツが占める四角形の数と位置が異なるので、パーツ クラスを作成し、7 つのパーツを格納する配列を作成します。パーツが占める四角形の数と位置。落下したパーツが最下位に到達すると、新しいパーツが生成され、そのパーツのマークされた四角形がゲーム領域の配列に割り当てられます。

ゲームループ機能で、落下部分、固定部分、次の落下部分を印刷します。

基礎知識:

HTML5 CSS JS
このゲームには 3 つのファイルが含まれています:

RusBlock.html: 要素の設定
RusBlock.css: スタイルの設定
RusBlock.js: スクリプト コントロール

ステップ 1: インターフェイスの設定とマテリアルの準備

RusBlock.html

コードをコピー
コードは次のとおりです。



/title> <br><link rel=”stylesheet” type=”text/css” href=”RusBlock.css”> <br><script type=”text/javascript”> <br>function ShareGame () { <br>var URL = “http://share.renren.com/share/buttonshare.do?link=” document.URL “&title=RusBlock” <br>window.showModalDialog([URL]); } <br></script> <br></head> <br><body onkeyup=”loop” id=” Background-AudioPlayer ” preload=”auto”> <br><source src=”audio/background.mp3″ type=”audio/mp3″/> <br></audio><audio id=” GameOver-AudioPlayer” preload=”auto”> <br></audio> =”Score-AudioPlayer” preload=”auto”><br><source src=”audio/score.mp3″ type=”audio/mp3″/> <br></audio>< ;div id=”ゲームエリア”> <br><div id=”ボタンエリア”>h1 id=”ゲーム名”>RusBlock<br>< ;button id=”Button-Game-Start” onclick=”GameStart()”>開始</button><br><button id=”Button-Game-End” onclick=”GameEnd()”>終了< ;/button> <br><form id=”Form-Game-Level”> <br><select id="”Select-Game-Level”"><br><option value="”"></option><オプション値=”300″>ノーマル<br><オプション値=”200″>ハード</オプション> </select> <br></form> <br><button onclick=”ShareGame()” id=”Button-Game-Share”>Renren に共有</button> div> <br><canvas id=”Game-Canvas”></canvas> <br><h2>スコア</h2> 🎜><p id=”ゲームスコア”>/p> <br></div> <br><script type=”text /javascript” src= 「RusBlock.js」><br><br><br><br>ステップ 2: スタイル <br> RosBlock.css <br><br><br><br><br><br>コードをコピー<br><br><br>コードは次のとおりです:<br><div class="msgborder" id="phpcode25"> <br>body { <br>背景色:グレー; <br>text-align:center; <br>font-family:'Times New Roman'; <br>背景画像:url(""); <br>} <br>h1#ゲーム名 { <br>背景色:白; <br>幅:100%; <br>フォントサイズ:x-large; <br>} <br>h2,#Game-Score { <br>font-size:x-large; <br>背景色:白; <br>} <br>#Game-Area { <br>位置:絶対; <br>左:10%; <br>幅:80%; <br>高さ:99%; <br>} <br>canvas#Game-Canvas { <br>背景色:白; <br>幅:80%; <br>高さ:98%; <br>浮動小数点:左; <br>} <br>#ボタンエリア ,#スコアエリア{ <br>width:10%; <br>高さ:100%; <br>浮動小数点:左; <br>} <br>#ボタンゲーム開始、#ボタンゲーム終了、#ボタンゲーム共有、#選択ゲームレベル{ <br>width:100%; <br>高さ:10%; <br>フォントサイズ: 大きく; <br>border-right-width:3px; <br>背景色:白; <br>} <br>#Select-Game-Level { <br>width:100%; <br>高さ:100%; <br>フォントサイズ:x-large; <br>ボーダーカラー:グレー; <br>} <br> </div> <br><strong> 第三步:编写js代码 <br><br></strong>RusBlock.js <br><br>Rusblock类に含まれる成员解析: <br><br>データ: <br><br>nCurrentComID:現在落下している部品のID <br><br>aState[21][25]:存储游戏領域状態态的数组 <br><br>CurrentCom:現在落下しているコンポーネント <br><br>NextCom: 下の部分 <br><br>ptIndex: 現在落下するコンポーネントの相对游戏領域のインデックス <br><br>関数: <br><br>NewNextCom(): 新しく生成されたもの下部分 <br><br>NextComToCurrentCom(): 下部分のデータを現在落下するコンポーネント上に移動します <br><br>CanDown(): 当前コンポーネントが以下に落下可能かどうか判断します <br><br>CanNew (): 新しい部品を生成できるかどうかを判断します。 <br><br>Left():当前部品方向左移動 <br><br>Right():当前部品方向右移動 <br><br>Rotate() :当前部品顺時针旋转 <br><br>Acceleratet():当前部品方向下加速 <br><br>Dislapse():消去一行 <br><br>CheckFail():判断否か游戏失败 <br> <br>InvalidateRect():刷新当前コンポーネントの領域 <br><br> 完了:<a target="_blank" href="http://pan.baidu.com/s/13nnRI">デモのダウンロード</a> <br><img alt="" src="http://files.jb51.net/file_images/article/201311/201311291618142.gif?20131029161836"></select> </div></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="html5 で実装された特殊効果 (実践的な共有)_html5 チュートリアルのスキルをメモします。" href="https://m.php.cn/ja/faq/6130.html">html5 で実装された特殊効果 (実践的な共有)_html5 チュートリアルのスキルをメモします。</a></span><span>次の記事:<a class="dBlack" title="html5 で実装された特殊効果 (実践的な共有)_html5 チュートリアルのスキルをメモします。" href="https://m.php.cn/ja/faq/6134.html">html5 で実装された特殊効果 (実践的な共有)_html5 チュートリアルのスキルをメモします。</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="https://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="https://m.php.cn/ja/faq/348281.html" title="AlloyTouch 全画面スクロール プラグインは 30 秒で滑らかな H5 ページを作成します" class="aBlack">AlloyTouch 全画面スクロール プラグインは 30 秒で滑らかな H5 ページを作成します</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/348372.html" title="HTML5の実戦とタッチイベント解析(touchstart、touchmove、touchend)" class="aBlack">HTML5の実戦とタッチイベント解析(touchstart、touchmove、touchend)</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/348373.html" title="HTML5 Canvas 9での画像描画例を詳しく解説" class="aBlack">HTML5 Canvas 9での画像描画例を詳しく解説</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/348374.html" title="正規表現と新しい HTML5 要素" class="aBlack">正規表現と新しい HTML5 要素</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/348469.html" title="NodeJS と HTML5 を組み合わせて複数のファイルをドラッグ アンド ドロップしてサーバーにアップロードする方法" class="aBlack">NodeJS と HTML5 を組み合わせて複数のファイルをドラッグ アンド ドロップしてサーバーにアップロードする方法</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p></div><div class="footermid"><a href="https://m.php.cn/ja/about/us.html">私たちについて</a><a href="https://m.php.cn/ja/about/disclaimer.html">免責事項</a><a href="https://m.php.cn/ja/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body><!-- Matomo --><script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '9']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script><!-- End Matomo Code --></html>