翻牌游戏实现思路java,html5记忆翻牌游戏实现思路及代码

本文介绍了一款卡牌游戏的设计,涉及正反面牌的放置、配对规则、洗牌算法、牌面操作响应、作弊事件处理,以及鼠标交互和位置跟踪。开发者通过JavaScript实现了动态卡组生成、视觉效果和事件监听,确保了游戏体验的流畅和公平性。
摘要由CSDN通过智能技术生成

翻开的2张牌如果配对将会消除,否则2张牌都会返回反向。需求分析怎么放置正的牌面和背的牌面及配对成功后如何消除牌面怎么生成牌组并确定每张牌的位置和对应的图片如何洗牌怎么记录牌组的配对信息如何确定点击事件是第一次点击还是第二次点击作弊事件的处理:两次单击相同张牌点击已经消除的牌面点击牌面以外的区域牌翻开之后需要给一定时间让玩家看清楚,怎么实现暂停鼠标点击事件的响应及获得鼠标点击位置的坐标从而确定点击的是哪一张牌MYCode:

复制代码

代码如下:

testvarctx;varcanvas;var卡;varfirst_pick=true;//第一次点击的标志varfirst_card=-1;varsecond_card;varback_color=“rgb(255,0,0)”;//卡片背面颜色vartable_color=“#FFF”;vardeck=[];//注意varfirst_x=10;varfirst_y=50;varmargin=30;varcard_width=50;varcard_height=50;变量对=[[“”1_a.jpg“,”1_b.jpg“],[”2_a.jpg“,”2_b.jpg“],

[“5_a.jpg”,“5_b.jpg”]];functiondraw_back()//放置卡片背面{ctx.fillStyle=back_color;ctx.fillRect(this.sx,this.sy,this.swidth,this.sheight);}函数Card(sx,sy,swidth,sheeight,img,info)//构造函数{this.sx=sx;this.sy=sy;this.swidth=swidth;this.sheight=高度;this.info=info;this.img=img;this.draw=draw_back;}函数make_deck()//生成卡组并进行{vari;vara_card;varb_card;vara_pic;varb_pic;varcx=first_x;varcy=first_y;对于(i=0;i

a_pic=newImage();a_pic.src=对[i][0];a_card=新的Card(cx,cy,card_width,card_height,a_pic,i);deck.push(a_card);b_pic=newImage();b_pic.src=对[i][1];b_card=新卡(cx,cy+card_height+保证金,card_width,card_height,b_pic,i);deck.push(b_card);cx=cx+card_width+保证金;//注意a_card.draw();b_card.draw();}}函数shuffle()//洗牌{vari;varj;vartemp_info;vartemp_img;vardeck_length=deck.length;vark;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=甲板[i].img;卡牌[i].info=卡牌[j].info;卡牌[i].img=卡牌[j].img;deck[j].info=temp_info;卡牌[j].img=temp_img;}}functionselect(ev){//varout;varmx;varmy;//varpick1;//varpick2;vari;注意是否(ev.layerX||ev.layerX==0){//Firefoxmx=ev.layerX;我=ev.layerY;}elseif(ev.offsetX||ev.offsetX==0){//Operamx=ev.offsetX;my=ev.offsetY;}for(i=0;i

卡=卡组[i];if(card.sx>=0)//牌重新消除{//判断单击的是哪一张牌if(mx>card.sx&&mxcard.sy&&我的

}}}函数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();卡牌[second_card].draw();first_card=-1;}}函数init(){canvas=document.getElementById('canvas');

canvas.addEventListener('click',选择,false);ctx=canvas.getContext('2d');make_deck();shuffle();}123142

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值