亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

html5記憶翻牌游戲實現思路及代碼

2024-08-26 00:16:33
字體:
來源:轉載
供稿:網友

點評:主要功能實現翻開的2張牌如果配對就會消除,否則2張牌都會返回背面,下面為大家介紹一下需求分析及示例代碼,感興趣的朋友可以學習下

html5記憶翻牌游戲實現思路及代碼

翻開的2張牌如果配對就會消除,否則2張牌都會返回背面。

需求分析

怎么繪制正的牌面和背的牌面及配對成功后怎么消除牌面
怎么生成牌組并且確定每張牌的位置和對應的圖片

怎么洗牌
怎么記錄牌組的配對信息
怎么確定點擊事件是第一次點擊還是第二次點擊

作弊事件的處理:兩次點擊同一張牌 點擊已經消除的牌面 點擊牌面之外的區域
牌翻開之后需要給一定時間讓玩家看清楚,怎么實現暫停

鼠標點擊事件的響應及獲得鼠標點擊位置的坐標從而確定點擊的是哪一張牌

MYCode:

復制代碼

代碼如下:


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>test </title>
<script type="text/javascript">
var ctx;
var canvas;
var card;
var first_pick = true; //第一次點擊的標志
var first_card = -1;
var second_card;
var back_color = "rgb(255,0,0)"; //卡片背面顏色
var table_color = "#FFF";
var deck = []; //note
var first_x = 10;
var first_y = 50;
var margin = 30;
var card_width = 50;
var card_height = 50;
var pairs = [
["1_a.jpg", "1_b.jpg"],
["2_a.jpg", "2_b.jpg"],
["3_a.jpg", "3_b.jpg"],
["4_a.jpg", "4_b.jpg"],
["5_a.jpg", "5_b.jpg"]
];
function draw_back()//繪制卡片背面
{
ctx.fillStyle = back_color;
ctx.fillRect(this.sx, this.sy, this.swidth, this.sheight);
}
function Card(sx, sy, swidth, sheight, img, info)//構造函數
{
this.sx = sx;
this.sy = sy;
this.swidth = swidth;
this.sheight = sheight;
this.info = info;
this.img = img;
this.draw = draw_back;
}
function make_deck()//生成卡組并繪制
{
var i;
var a_card;
var b_card;
var a_pic;
var b_pic;
var cx = first_x;
var cy = first_y;
for (i = 0; i < pairs.length; i++)
{
a_pic = new Image();
a_pic.src = pairs[i][0];
a_card = new Card(cx, cy, card_width, card_height, a_pic, i);
deck.push(a_card);
b_pic = new Image();
b_pic.src = pairs[i][1];
b_card = new Card(cx, cy + card_height + margin, card_width, card_height, b_pic, i);
deck.push(b_card);
cx = cx + card_width + margin; //note
a_card.draw();
b_card.draw();
}
}
function shuffle()//洗牌
{
var i;
var j;
var temp_info;
var temp_img;
var deck_length = deck.length;
var k;
for (k = 0; k < 3 * deck_length; k++)
{
i = Math.floor(Math.random() * deck_length);
j = Math.floor(Math.random() * deck_length);
temp_info = deck[i].info;
temp_img = deck[i].img;
deck[i].info = deck[j].info;
deck[i].img = deck[j].img;
deck[j].info = temp_info;
deck[j].img = temp_img;
}
}
function choose(ev)
{
//var out;
var mx;
var my;
//var pick1;
//var pick2;
var i;
//note
if (ev.layerX || ev.layerX == 0) { // Firefox
mx = ev.layerX;
my = ev.layerY;
} else if (ev.offsetX || ev.offsetX == 0) { // Opera
mx = ev.offsetX;
my = ev.offsetY;
}
for (i = 0; i < deck.length; i++)
{
card = deck[i];
if (card.sx >= 0)//牌未被消除
{
//判斷點擊的是哪一張牌
if (mx > card.sx && mx < card.sx + card.swidth && my > card.sy && my < card.sy + card.sheight)
{
if (i != first_card)//如果兩次點擊同一張牌不做處理
break;
}
}
}
if (i < deck.length)
{
if (first_pick)//如果是第一次點擊
{
first_card = i;
first_pick = false; //note
ctx.drawImage(card.img, card.sx, card.sy, card.swidth, card.sheight);
}
else
{
first_pick = true; //note
second_card = i;
ctx.drawImage(card.img, card.sx, card.sy, card.swidth, card.sheight);
tid=setTimeout(flip_back,1000);
}
}
}
function flip_back()
{
if (card.info == deck[first_card].info)//配對成功
{
ctx.fillStyle = table_color;
ctx.fillRect(deck[first_card].sx, deck[first_card].sy, deck[first_card].swidth, deck[first_card].sheight);
ctx.fillRect(deck[second_card].sx, deck[second_card].sy, deck[second_card].swidth, deck[second_card].sheight);
deck[first_card].sx = -1;
deck[second_card].sy = -1;
first_card=-1;
}
else
{
deck[first_card].draw();
deck[second_card].draw();
first_card=-1;
}
}
function init()
{
canvas = document.getElementById('canvas');
canvas.addEventListener('click', choose, false);
ctx = canvas.getContext('2d');
make_deck();
shuffle();
}
</script>
</head>
<body>
<canvas/>
123142
</body>
</html>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97超碰国产精品女人人人爽| 亚洲人成自拍网站| 成人欧美一区二区三区在线| 欧美中文字幕第一页| 狠狠久久亚洲欧美专区| 久久久久在线观看| www国产亚洲精品久久网站| 欧美精品videos性欧美| 2023亚洲男人天堂| 伊人激情综合网| 国产精品国产三级国产aⅴ浪潮| 亚洲国产精品99久久| 最近2019中文字幕大全第二页| 538国产精品视频一区二区| 26uuu国产精品视频| 亚洲欧美国产日韩天堂区| 日韩av快播网址| 国产日韩在线视频| 97久久超碰福利国产精品…| 在线丨暗呦小u女国产精品| 午夜精品免费视频| 久久av红桃一区二区小说| 日本精品va在线观看| 一本色道久久88综合日韩精品| 国产suv精品一区二区三区88区| 91精品国产91久久久久久吃药| xx视频.9999.com| 日韩少妇与小伙激情| 91在线无精精品一区二区| 91成人免费观看网站| 九色91av视频| 成人免费在线视频网站| 亚洲欧美一区二区三区情侣bbw| 欧美日韩国产专区| 91中文字幕在线| 欧美黑人巨大精品一区二区| 91av在线视频观看| 国产成人免费91av在线| 91精品国产777在线观看| 国产精品一区av| 日韩精品在线观看视频| 国产精品视频午夜| 国产成人高清激情视频在线观看| 成人av番号网| 亚洲欧美日韩网| 亚洲男女自偷自拍图片另类| 国产精品香蕉av| 91九色蝌蚪国产| 欧美成人免费在线视频| 亚洲精品国精品久久99热| 不卡av电影院| 午夜精品久久17c| 色偷偷av亚洲男人的天堂| 日韩中文字幕在线观看| 国产亚洲成精品久久| 国产极品jizzhd欧美| 国产精品国产三级国产aⅴ9色| 久久影院在线观看| 国产精品中文字幕久久久| 日韩最新中文字幕电影免费看| 日韩av成人在线| 国产精品久久久久77777| 日韩精品视频三区| 欧美亚洲国产视频| 欧美激情中文字幕乱码免费| 日韩中文字幕免费| 国产一区二区三区欧美| 亚洲人成网站999久久久综合| 欧美日韩成人在线播放| 粉嫩av一区二区三区免费野| 成人免费看吃奶视频网站| 精品视频中文字幕| 国产精品视频区1| 91久久久久久久久| 欧美成人国产va精品日本一级| 色老头一区二区三区在线观看| 久久视频在线观看免费| 欧美一级免费视频| 久久久久免费精品国产| 国产91精品久久久久久久| 欧美日韩高清在线观看| 国产丝袜一区视频在线观看| 精品少妇一区二区30p| 亚洲激情成人网| 伊人伊成久久人综合网站| 国产精品免费一区| 欧美成人午夜影院| 一区二区三区视频在线| 国产欧美日韩中文字幕| yw.139尤物在线精品视频| 日韩av不卡电影| 国产精品久久久久久久久久久久久久| 国产精品视频色| 久久综合国产精品台湾中文娱乐网| 日韩av一区在线观看| 成人免费午夜电影| 欧美黑人一级爽快片淫片高清| 久久免费精品日本久久中文字幕| 欧美综合在线第二页| 国产精品v日韩精品| 欧美视频裸体精品| 精品电影在线观看| 亚洲性生活视频在线观看| 国产亚洲精品激情久久| 日韩激情片免费| 最近2019年日本中文免费字幕| 黑人狂躁日本妞一区二区三区| 久久久久久久久久久网站| 日本精品一区二区三区在线播放视频| 日本精品免费一区二区三区| 国产成人高清激情视频在线观看| 97超视频免费观看| 久久久黄色av| 欧美日韩在线视频一区二区| 久久精品视频99| 国产精品嫩草视频| 亚洲免费视频在线观看| 久久久精品中文字幕| 精品无人区太爽高潮在线播放| 亚洲区一区二区| 国产欧亚日韩视频| 国产一区二区av| 在线成人激情黄色| 久久影视电视剧免费网站| 久久夜色精品亚洲噜噜国产mv| 日韩在线免费av| 色中色综合影院手机版在线观看| 国产精品久久久久久超碰| 久久亚洲成人精品| 欧美成年人视频| 国产原创欧美精品| 国产精品久久久久久av福利| 亚洲一区二区福利| 欧美自拍大量在线观看| 日韩欧美在线视频免费观看| 亲爱的老师9免费观看全集电视剧| 久久伊人色综合| 国产精品久久一区主播| 一区二区三区精品99久久| 欧美精品在线免费观看| 亚洲自拍偷拍色图| 亚洲视频在线免费观看| 国产精品欧美亚洲777777| 国模吧一区二区三区| 精品成人国产在线观看男人呻吟| 日韩久久免费视频| 日本三级韩国三级久久| 国产精品久久久久久久天堂| 亚洲人永久免费| 亚洲欧洲国产一区| 7777精品视频| 日韩av在线免费看| 亚洲欧美一区二区三区情侣bbw| 日韩精品在线观看一区| 亚洲一区二区免费在线| 91精品综合久久久久久五月天| 国产精品久久久久秋霞鲁丝| 国产精品久久久久高潮| 欧美xxxx14xxxxx性爽| 国产成人福利网站| 亚洲影院高清在线| 亚洲电影成人av99爱色| 91情侣偷在线精品国产| 亚洲精品日韩av|