検索

HTML5版智力拼图

May 16, 2018 am 10:18 AM

本文介绍文件下载:智力拼图板文件下载 (浏览器需支持HTML5)

        还记得小时候经常玩的这种智力拼图板么,通过各个小格子的移动拼成一幅完整的画面。这种拼图的规则大致是:

1. 如果是九宫格的玩法,在九宫格里面有八个小方块;

2. 在右上角(或者像图片里一样的在右下角)是最后一个小方块,当其他8个方块拼凑完成后,将第九块方块推回到九宫格中,凑成一幅完整的画面。

(不过我小时候的策略都是抠出来,然后暴力的完成,智商不够,暴力来凑)

代码剖析

       以下是对一些关键代码的剖析,在游戏的开始,我们需要选择一张本地图片,然后游戏开始,会将选择的图片打乱到九宫格中,然后将右上角的图片移出,这样九宫格里就有空白位了:

1. 如何预览文件控件选择的图片?

        最近的浏览器中,处于安全的原因,他们都将图片的本地地址隐藏起来,这样我们就不能使用图片控件来进行预览了,万幸的是他们同时还提供了FileReader对象,我们可以通过该对象进行图片的预览,当然我也可以通过该对象得到图片的信息,然后可以在Canvas中进行绘制;

 1 $("#pic").change(function () {
 2   if (this.files.length > 0) {
 3     if (this.files[0].type == "image/jpeg" || this.files[0].type == "image/png") {
 4      reader.readAsDataURL(this.files[0]);
 5      }
 6       else {
 7       $(this).val("");
 8        }
 9       }
10    else {
11      $(this).val("");
12      }
13    });

2. 如何对图片进行裁剪分块?

       因为我们所选择的图片可能并不能完整的被分割成需要的块数,比如我们设置横向为3格,但是图片的宽度并不是3的倍数,这样我们就需要对图片进行裁剪,以得到最合适的尺寸;

1   var validWidth = img[0].width - img[0].width % xCount;
2  var validHeight = img[0].height - img[0].height % yCount;

       现在我们需要计算每个方块里面应该绘制什么样的图片,所以需要计算在原图里面截取的坐标点和尺寸,以及映射到九宫格里面的位置;

1  for (var y = 0; y < yCount; y++) {
2     for (var x = 0; x < xCount; x++) {
3      pieces.push({ index: x + y, point: { x: x * validWidth / xCount,
 y: y * validHeight / yCount, 
width: validWidth / xCount, height: validHeight / yCount } });
4      drawPoints.push({ x: x * pieceWidth, y: y * pieceHeight });
5      }
6        }

现在开始把方块进行打乱,但是我们又需要右上角的方块是正确的一块,并且可以把它移出到九宫格外;

 1   //randon draw points
 2     for (var i = 0; i < pieces.length; i++) {
 3      var index = parseInt(Math.random() * drawPoints.length);
 4         var drawPoint = drawPoints[index];
 5           drawPoints.splice(index, 1);
 6            pieces[i].DrawPoint = drawPoint;
 7          }
 8      //swap the top right
 9          for (var i = 0; i < pieces.length; i++) {
10           if (pieces[i].DrawPoint.x == (xCount - 1) * pieceWidth && 
pieces[i].DrawPoint.y == 0 +&& i != (xCount - 1)) {
11     var oldDP = pieces[xCount - 1].DrawPoint;
12     pieces[xCount - 1].DrawPoint = pieces[i].DrawPoint;
13     whitePiece = { x: pieces[xCount - 1].DrawPoint.x, y: pieces[xCount - 1].DrawPoint.y};
14     pieces[xCount - 1].DrawPoint.x += pieceWidth;
15     pieces[i].DrawPoint = oldDP;
16     break;
17       }
18                 }

在检测方块是否可以移动,我们就判断在该方块的上下左右是否有空白位,有就可以移向空白位;

1  var canMove = function (p) {
2     return (Math.abs(p.DrawPoint.x - whitePiece.x) == pieceWidth && 
p.DrawPoint.y == whitePiece.y)
3        || (Math.abs(p.DrawPoint.y - whitePiece.y) == pieceHeight && 
p.DrawPoint.x == whitePiece.x);
4           };

是否拼凑完成的判断,我们就判断该图片应该在第几行,第几列,并且当前在第几行,第几列,如果所有的方块都在正确的位置,那就表示成功了。

 1  var success = function () {
 2     for (var i = 0; i < pieces.length; i++) {
 3       var x = i % 3;
 4         var y = parseInt(i / 3);
 5            if (pieces[i].DrawPoint.x != x * pieceWidth || pieces[i].DrawPoint.y 
 != y * pieceWidth) {
 6               return false;
 7            }
 8        }
 9 
10        return true;
11       }

以上就是HTML5版智力拼图的内容,更多相关内容请关注PHP中文网(www.php.cn)!



声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
H5:ウェブ上のユーザーエクスペリエンスをどのように強化するかH5:ウェブ上のユーザーエクスペリエンスをどのように強化するかApr 19, 2025 am 12:08 AM

H5は、マルチメディアサポート、オフラインストレージ、パフォーマンスの最適化により、Webユーザーエクスペリエンスを向上させます。 1)マルチメディアサポート:H5と要素は、開発を簡素化し、ユーザーエクスペリエンスを向上させます。 2)オフラインストレージ:WebStorageとIndexEdDBは、エクスペリエンスを改善するためにオフラインで使用できるようにします。 3)パフォーマンスの最適化:ウェブワーカーと要素は、パフォーマンスを最適化して帯域幅の消費を削減します。

H5コードの分解:タグ、要素、属性H5コードの分解:タグ、要素、属性Apr 18, 2025 am 12:06 AM

HTML5コードは、タグ、要素、属性で構成されています。1。タグはコンテンツタイプを定義し、などの角度ブラケットに囲まれています。 2。要素は、startタグ、内容、および内容などのエンドタグで構成されています。 3。属性は、開始タグのキー値のペアを定義し、ような関数を強化します。これらは、Web構造を構築するための基本ユニットです。

H5コードの理解:HTML5の基礎H5コードの理解:HTML5の基礎Apr 17, 2025 am 12:08 AM

HTML5は、最新のWebページを構築するための重要なテクノロジーであり、多くの新しい要素と機能を提供します。 1。HTML5は、Webページの構造とSEOを強化するなどのセマンティック要素を導入します。 2。プラグインなしのマルチメディア要素と埋め込みメディアをサポートします。 3.フォームは、新しい入力タイプと検証プロパティを強化し、検証プロセスを簡素化します。 4.オフラインおよびローカルストレージ機能を提供して、Webページのパフォーマンスとユーザーエクスペリエンスを向上させます。

H5コード:Web開発者向けのベストプラクティスH5コード:Web開発者向けのベストプラクティスApr 16, 2025 am 12:14 AM

H5コードのベストプラクティスには以下が含まれます。1。正しいDoctype宣言と文字エンコーディングを使用します。 2。セマンティックタグを使用します。 3。HTTPリクエストを削減します。 4.非同期負荷を使用します。 5。画像を最適化します。これらのプラクティスは、Webページの効率、保守性、ユーザーエクスペリエンスを向上させることができます。

H5:Web標準とテクノロジーの進化H5:Web標準とテクノロジーの進化Apr 15, 2025 am 12:12 AM

Web標準とテクノロジーは、これまでにHTML4、CSS2、および単純なJavaScriptから進化し、重要な開発を受けてきました。 1)HTML5は、CanvasやWebstorageなどのAPIを導入し、Webアプリケーションの複雑さと互換性を高めます。 2)CSS3はアニメーション関数とトランジション関数を追加して、ページをより効果的にします。 3)JavaScriptは、矢印関数やクラスなど、node.jsおよびES6の最新の構文を通じて開発効率とコードの読みやすさを向上させます。これらの変更により、パフォーマンスの最適化とWebアプリケーションのベストプラクティスの開発が促進されました。

H5はHTML5の速記ですか?詳細の調査H5はHTML5の速記ですか?詳細の調査Apr 14, 2025 am 12:05 AM

H5はHTML5の略語だけでなく、より広い最新のWeb開発テクノロジーエコシステムを表しています。1。H5にはHTML5、CSS3、JavaScript、および関連するAPIおよびテクノロジーが含まれます。 2.より豊かでインタラクティブでスムーズなユーザーエクスペリエンスを提供し、複数のデバイスでシームレスに実行できます。 3. H5テクノロジースタックを使用して、レスポンシブWebページと複雑なインタラクティブ機能を作成できます。

H5およびHTML5:Web開発で一般的に使用される用語H5およびHTML5:Web開発で一般的に使用される用語Apr 13, 2025 am 12:01 AM

H5とHTML5は、同じこと、つまりHTML5を参照します。 HTML5はHTMLの5番目のバージョンであり、セマンティックタグ、マルチメディアサポート、キャンバスとグラフィックス、オフラインストレージ、ローカルストレージなどの新しい機能をもたらし、Webページの表現力と互換性を向上させます。

H5は何を参照していますか?コンテキストの探索H5は何を参照していますか?コンテキストの探索Apr 12, 2025 am 12:03 AM

H5ReferStoHtml5、apivotaltechnologyinwebdevelopment.1)html5introduceSnewelementsandapisforrich、dynamicwebapplications.2)Itupp ortsmultimediawithoutplugins、endancingurexperiencecrossdevices.3)semanticelementsimprovecontentstructurendseo.4)H5'srespo

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。