HTML5 메모리 플립 게임 구현 아이디어 및 code_html5 튜토리얼 기술
뒤집힌 2장의 카드가 일치하면 제거되고, 일치하지 않을 경우 2장의 카드는 뒷면으로 반환됩니다.
요구사항 분석
앞면과 뒷면 카드 뽑는 방법 및 매칭 성공 후 카드 제거 방법
덱 생성 방법 및 각 카드 결정 방법 카드의 위치와 해당 그림
카드 섞는 방법
덱의 페어링 정보 기록 방법
클릭 이벤트가 첫 번째 클릭인지 두 번째 클릭인지 확인하는 방법
치팅 이벤트 처리: 동일한 카드를 두 번 클릭합니다. 카드 바깥쪽 영역을 클릭합니다.
카드를 뒤집은 후 일정 시간을 기다려야 합니다. 플레이어가 일시 정지를 달성하는 방법
마우스 클릭 이벤트에 응답하고 마우스 클릭 위치의 좌표를 얻어 어떤 카드가 클릭되었는지 확인
MYCode:
;
<제목>테스트
var ctx;
var 카드; var first_pick = true; //첫 번째 클릭의 부호
var second_card
var back_color = "rgb(255,0,0)"; 카드 뒷면
var table_color = "#FFF";
var Deck = []; //참고
var first_x =
var first_y = 50; 30;
var 카드 너비 = 50;
var 카드 높이 = 50;
var 쌍 = [
["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.sheight =
this.img = img; 🎜>this.draw = draw_back ;
}
function make_deck()//덱 생성 및 그리기
{
var i
var a_card
var a_pic;
var b_pic;
var cx = first_x;
var cy = first_y
for (i = 0; i < pair.length; i )
🎜>a_pic = new Image() ;
a_pic.src = pair[i][0];
a_card = new Card(cx, cy, 카드_폭, 카드_높이, a_pic, i); push(a_card);
b_pic = new Image();
b_pic.src = pair[i][1]
b_card = new Card(cx, cy 카드 높이 margin, 카드 너비, 카드 높이, b_pic, i);
deck.push(b_card);
cx 카드 너비 마진; //참고
a_card.draw()
}
함수 shuffle() //셔플
{
var i;
var j
var temp_img;
var Deck_length; 🎜>var k;
for (k = 0; k < 3 * 데크_길이; k )
{
i = Math.floor(Math.random() * 데크_길이)
j = Math.floor(Math.random () * 데크_길이);
temp_info = 데크[i].info;
temp_img = 데크[i].img
데크[i].info = 데크[j ].info;
데크[i].img = 데크[j].img;
deck[j].info = temp_info;
deck[j].img = temp_img; 🎜>}
function choose(ev)
{
//var out
var mx
var my
//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) { // 오페라
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
if (i != first_card)//동일한 카드를 두 번 클릭하면 처리되지 않습니다.
break
}
}
}
if ( i
{
if (first_pick)//첫 번째 클릭인 경우
{
first_card = i
first_pick = false; ctx.drawImage(카드 .img, 카드.sx, 카드.sy, 카드.swidth, 카드.sheight)
}
else
{
first_pick = //참고
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(데크[first_card].sx, 데크[first_card].sy, 데크[first_card].swidth, 데크[first_card].sheight)
ctx.fillRect(deck[second_card].sx , 데크[second_card] .sy, 데크[second_card].swidth,
deck[first_card].sx =
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');
shuffle()
}
>
123142
< /html>

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

HTML의 테이블 테두리 안내. 여기에서는 HTML의 테이블 테두리 예제를 사용하여 테이블 테두리를 정의하는 여러 가지 방법을 논의합니다.

HTML의 Nested Table에 대한 안내입니다. 여기에서는 각 예와 함께 테이블 내에 테이블을 만드는 방법을 설명합니다.

HTML 여백-왼쪽 안내. 여기에서는 HTML margin-left에 대한 간략한 개요와 코드 구현과 함께 예제를 논의합니다.

HTML 테이블 레이아웃 안내. 여기에서는 HTML 테이블 레이아웃의 값에 대해 예제 및 출력 n 세부 사항과 함께 논의합니다.

HTML 입력 자리 표시자 안내. 여기서는 코드 및 출력과 함께 HTML 입력 자리 표시자의 예를 논의합니다.

HTML 순서 목록에 대한 안내입니다. 여기서는 HTML Ordered 목록 및 유형에 대한 소개와 각각의 예에 대해서도 설명합니다.

HTML onclick 버튼에 대한 안내입니다. 여기에서는 각각의 소개, 작업, 예제 및 다양한 이벤트의 onclick 이벤트에 대해 설명합니다.

HTML에서 텍스트 이동 안내. 여기서는 Marquee 태그가 구문과 함께 작동하는 방식과 구현할 예제에 대해 소개합니다.
