JavaScript 웹 판 오목 게임 실현
js 를 배 운 지 3 일 만 에 선생님 을 따라 완성 한 오목 게임,학습 성 과 를 기록 하고 어른 들 이 함께 경험 을 공유 하고 지적 하 는 것 을 환영 합 니 다.
이 프로그램 은 주로 세 부분 을 통 해 이 루어 집 니 다.
1.바둑판 그리 기
2.마우스 상호작용
3.승패 판단
<!DOCTYPE html>
<html>
<head>
<title>
canvastest
</title>
</head>
<body>
<h1> canvas</h1>
<canvas id="canvas"width="400"height="400">
</canvas>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
<script>
var canv=document.getElementById("canvas");
var ctx=canv.getContext("2d");
ctx.strokeStyle="black";
var bow=0;
// ;
var matrix=[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
];
ctx.beginPath();
for(var i=0;i<19;i++){
ctx.moveTo(10+20*i,10);
ctx.lineTo(10+i*20,370);
ctx.moveTo(10,20*i+10);
ctx.lineTo(370,i*20+10);
}
ctx.stroke();
// ;
$("#canvas").click(function(event)
{
console.log(event.offsetX)
console.log(bow);
var arcPosX,arcPosY;
var mtxPosX,mtxPosY;
for(var x=0;x<19;x++)
{
if((Math.abs(event.offsetX-(10+x*20)))<10)
{
arcPosX=10+x*20;
mtxPosX=x;
}
if((Math.abs(event.offsetY-(10+x*20)))<10)
{
arcPosY=10+x*20;
mtxPosY=x;
}
}
if(matrix[mtxPosX][mtxPosY] == 0)
{
bow=!bow;
ctx.beginPath();
if(bow){
ctx.fillStyle="Black";
ctx.arc(arcPosX,arcPosY,10,0,Math.PI*2,false);
matrix[mtxPosX][mtxPosY]=1;
}
else{
ctx.fillStyle="White";
ctx.arc(arcPosX,arcPosY,10,0,Math.PI*2,false);
ctx.stroke();
matrix[mtxPosX][mtxPosY]=2;
}
ctx.fill();
}
//
var winFlag=0;
if(winFlag==0){
if(matrix[mtxPosX-1][mtxPosY] == matrix[mtxPosX][mtxPosY])
{
if(matrix[mtxPosX-2][mtxPosY] == matrix[mtxPosX][mtxPosY])
{
if(matrix[mtxPosX-3][mtxPosY] == matrix[mtxPosX][mtxPosY])
{
if(matrix[mtxPosX-4][mtxPosY] == matrix[mtxPosX][mtxPosY])
{
winFlag = 1;
}
else
{
if(matrix[mtxPosX+1][mtxPosY] == matrix[mtxPosX][mtxPosY])
{
winFlag = 1;
}
else
{
winFlag = 0;
}
}
}
else
{
for(var w = 0; w < 2 ; w ++)
{
if(matrix[mtxPosX+w+1][mtxPosY] != matrix[mtxPosX][mtxPosY])
{
winFlag = 0;
break;
}
else
{
winFlag = 1;
}
}
}
}
else
{
for(var w = 0; w < 3 ; w ++)
{
if(matrix[mtxPosX+w+1][mtxPosY] != matrix[mtxPosX][mtxPosY])
{
winFlag = 0;
break;
}
else
{
winFlag = 1;
}
}
}
}
else
{
for(var w = 0; w < 4 ; w ++)
{
if(matrix[mtxPosX+w+1][mtxPosY] != matrix[mtxPosX][mtxPosY])
{
winFlag = 0;
break;
}
else
{
winFlag = 1;
}
}
}
if(matrix[mtxPosX][mtxPosY-1] == matrix[mtxPosX][mtxPosY])
{
if(matrix[mtxPosX][mtxPosY-2] == matrix[mtxPosX][mtxPosY])
{
if(matrix[mtxPosX][mtxPosY-3] == matrix[mtxPosX][mtxPosY])
{
if(matrix[mtxPosX][mtxPosY-4] == matrix[mtxPosX][mtxPosY])
{
winFlag = 1;
}
else
{
if(matrix[mtxPosX][mtxPosY+1] == matrix[mtxPosX][mtxPosY])
{
winFlag = 1;
}
else
{
winFlag = 0;
}
}
}
else
{
for(var w = 0; w < 2 ; w ++)
{
if(matrix[mtxPosX][mtxPosY+w+1] != matrix[mtxPosX][mtxPosY])
{
winFlag = 0;
break;
}
else
{
winFlag = 1;
}
}
}
}
else
{
for(var w = 0; w < 3 ; w ++)
{
if(matrix[mtxPosX][mtxPosY+w+1] != matrix[mtxPosX][mtxPosY])
{
winFlag = 0;
break;
}
else
{
winFlag = 1;
}
}
}
}
else
{
for(var w = 0; w < 4 ; w ++)
{
if(matrix[mtxPosX][mtxPosY+w+1] != matrix[mtxPosX][mtxPosY])
{
winFlag = 0;
break;
}
else
{
winFlag = 1;
}
}
}
if(matrix[mtxPosX-1][mtxPosY-1] == matrix[mtxPosX][mtxPosY])
{
if(matrix[mtxPosX-2][mtxPosY-2] == matrix[mtxPosX][mtxPosY])
{
if(matrix[mtxPosX-3][mtxPosY-3] == matrix[mtxPosX][mtxPosY])
{
if(matrix[mtxPosX-4][mtxPosY-4] == matrix[mtxPosX][mtxPosY])
{
winFlag = 1;
}
else
{
if(matrix[mtxPosX+1][mtxPosY+1] == matrix[mtxPosX][mtxPosY])
{
winFlag = 1;
}
else
{
winFlag = 0;
}
}
}
else
{
for(var w = 0; w < 2 ; w ++)
{
if(matrix[mtxPosX+w+1][mtxPosY+w+1] != matrix[mtxPosX][mtxPosY])
{
winFlag = 0;
break;
}
else
{
winFlag = 1;
}
}
}
}
else
{
for(var w = 0; w < 3 ; w ++)
{
if(matrix[mtxPosX+w+1][mtxPosY+w+1] != matrix[mtxPosX][mtxPosY])
{
winFlag = 0;
break;
}
else
{
winFlag = 1;
}
}
}
}
else
{
for(var w = 0; w < 4 ; w ++)
{
if(matrix[mtxPosX+w+1][mtxPosY+w+1] != matrix[mtxPosX][mtxPosY])
{
winFlag = 0;
break;
}
else
{
winFlag = 1;
}
}
}
if(matrix[mtxPosX-1][mtxPosY+1] == matrix[mtxPosX][mtxPosY])
{
if(matrix[mtxPosX-2][mtxPosY+2] == matrix[mtxPosX][mtxPosY])
{
if(matrix[mtxPosX-3][mtxPosY+3] == matrix[mtxPosX][mtxPosY])
{
if(matrix[mtxPosX-4][mtxPosY+4] == matrix[mtxPosX][mtxPosY])
{
winFlag = 1;
}
else
{
if(matrix[mtxPosX+1][mtxPosY-1] != matrix[mtxPosX][mtxPosY])
{
winFlag = 0;
}
else
{
winFlag = 1;
}
}
}
else
{
for(var w = 0; w < 2 ; w ++)
{
if(matrix[mtxPosX+w+1][mtxPosY-w-1] != matrix[mtxPosX][mtxPosY])
{
winFlag = 0;
break;
}
else
{
winFlag = 1;
}
}
}
}
else
{
for(var w = 0; w < 3 ; w ++)
{
if(matrix[mtxPosX+w+1][mtxPosY-w-1] != matrix[mtxPosX][mtxPosY])
{
winFlag = 0;
break;
}
else
{
winFlag = 1;
}
}
}
}
else
{
for(var w = 0; w < 4 ; w ++)
{
if(matrix[mtxPosX+w+1][mtxPosY-w-1] != matrix[mtxPosX][mtxPosY])
{
winFlag = 0;
break;
}
else
{
winFlag = 1;
}
}
}
}
if(winFlag ==1){
if(bow)
alert("black win!");
else
alert("white win!");
}
});
</script>
</body>
</html>
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.