在我的项目中需要在里面添加一个翻牌游戏,就研究了一下,在这里只实现了基本的效果。不多说,和大家分享一下。
说到翻牌游戏,大致分为以下几个步骤:
绘制正反面卡牌-------------->洗牌----------------------->翻牌------------------->翻牌判断
这里面应用的一些图片,,,,,,额额额额,,,大家就自己下两个试试,这里也提供不了。。。嘿嘿
1.绘制正反面卡牌
function make_deck()//生成卡组并绘制
{
var i;//
var a_card;//a组卡牌容器
var b_card;//b组卡牌容器
var a_pic;//a组卡牌图片
var b_pic;//b组卡牌图片
var cx = first_x;//初始坐标X=50
var cy = first_y;//初始坐标Y=10
for ( i = 0; i < pairs.length/2; i++) {
/*Canvas绘制图片
* var c=document.getElementById("myCanvas");
var cxt=c.getContext("2d");
var img=new Image()
img.src="flower.png"
cxt.drawImage(img,0,0);*/
a_pic = new Image();
a_pic.src = pairs[i][0];
//绘制卡牌a组
a_card = new Card(cx, cy, card_width, card_height, a_pic, i);//给卡牌属性即卡牌对象生成了,并绘制了背面
deck.push(a_card);//将a组卡牌装进数组deck[]
//绘制与之a组卡牌面相同的b组
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);// 将b组卡牌装进数组deck[]
cx = cx + card_width + margin;
//cy = cy + card_height + margin;
//note
a_card.draw();
b_card.draw();
}
//绘制后两排
cx=first_x;
cy=first_y+card_height*2+margin*2;
for ( i = 4; i < pairs.length; i++) {
a_pic = new Image();
a_pic.src = pairs[i][0];
//绘制卡牌a组
a_card = new Card(cx, cy, card_width, card_height, a_pic, i);
deck.push(a_card);
//绘制与之a组卡牌面相同的b组
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;
//cy = cy + card_height + margin;
//note
a_card.draw();
b_card.draw();
}
}
2.洗牌
function shuffle()//洗牌
{
var i;
var j;
var temp_info;
var temp_img;
var deck_length = deck.length;
var k;
for ( k = 0; k < 9 * deck_length; k++) {
i = Math.floor(Math.random() * deck_length);//0-16
j = Math.floor(Math.random() * deck_length);//0-16
temp_info = deck[i].info;//第1张
temp_img = deck[i].img;//第1张图片
deck[i].info = deck[j].info;
deck[i].img = deck[j].img;
deck[j].info = temp_info;
deck[j].img = temp_img;
}
}
3.翻牌判断