canvas实现在手机上两人对战的打球小游戏代码
代码语言:html
所属分类:游戏
代码描述:canvas实现在手机上两人对战的打球小游戏代码,设计用于触摸屏幕,在场地上滑动/甩动球,先达到5分获胜,点击游戏区域在赢得比赛后重置,两个人一起玩更有趣。
代码标签: canvas 手机 两人 对战 打球 小游戏 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum=1.0,minimum=1.0,user-scalable=0" />
<style>
@import url('https://fonts.googleapis.com/css2?family=Silkscreen&display=swap');
html {
background: #222;
min-height: 100vh;
display: grid;
place-items: center;
overflow: hidden;
font-family: system-ui;
perspective: 50vw;
}
body {
margin: 0;
/* transform: rotateX(10deg) translateY(-5%); */
}
* {
box-sizing: border-box;
user-select: none;
}
p {
position: fixed;
left: 0;
top:0;
color: gray;
padding: 1rem;
margin: 0;
}
#gameCanvas {
background:
url('//repo.bfw.wiki/bfwrepo/image/64c8657304d19.png'),
SandyBrown;
background-size: cover;
box-sizing: border-box;
position: relative;
}
#gamebox {
width: fit-content;
position: relative;
}
/* #gamebox:after {
content: '';
position: absolute;
inset: 0px;
border: peru 20px solid;
box-shadow:
inset 0 0 0 5px rgba(0,0,0,.1);
pointer-events: none;
} */
#scoreboard {
position: absolute;
left: 0;
top: 0;
inset: 0;
background: rgba(0,0,0,.4);
backdrop-filter: blur(10px);
display: grid;
place-items: center;
opacity: 0;
pointer-events: none;
}
.show_sb {
pointer-events: all !important;
animation: show_sb 2s linear forwards;
}
@keyframes show_sb {
25% { opacity: 1; }
75% { opacity: 1; }
100% { opacity: 0; }
}
.gameOver {
pointer-events: all !important;
animation: gameOver .5s linear forwards;
}
@keyframes gameOver {
100% { opacity: 1; }
}
.pl {
border-top: 10px solid #333;
border-right: 10px solid #333;
border-bottom: 10px solid #222;
border-left: 10px solid #222;
background: black;
min-width: 175px;
aspect-ratio: 1/1;
font-size: 10rem;
line-height: 100%;
padding: 0 1rem 1.25rem 1rem;
font-family: 'Silkscreen';
color: white;
text-align: center;
}
.scored {
background: LimeGreen !important;
}
.winner {
background: gold !important;
}
</style>
</head>
<body>
<p>
设计用于触摸屏幕<br>
在场地上滑动/甩动球<br>
先达到5分获胜<br>
点击游戏区域在赢得比赛后重置<br>
两个人一起玩更有趣
</p>
<!-- -->
<div id="gamebox">
<canvas id="gameCanvas"></canvas>
<div id="scoreboard">
<div id="pl_one" class='pl'>0</div>
<div id="pl_two" class="pl">0</div>
</div>
</div>
<script >
const canvas = document.getElementById('gameCanvas');
canvas.setAttribute("height", window.innerHeight * .97);
canvas.setAttribute("width", window.innerHeight * .97 * .5625);
const ctx = canvas.getContext('2d');
const ballRadius = 20;
const friction = 0.96; // Friction coefficient (less than 1 to slow down ball)
const maxSwipeLength = 100;
let cooldownTime = 1000;
let ballXStart = canvas.width * .5;
let ballYStart = canvas.height * .75;
let ballX = ballXStart;
let ballY = ballYStart;
let ballSpeedX = 0;
let ballSpeedY = 0;
let isSwiping = false;
let swipeStartX = 0;
let swipeStartY = 0;
let swipEndX = 0;
let swipeEndY = 0;
let cooldownTimer = null;
let ob_size = 10;
let ballRotation = 0;
// alert('Designed for mobile devices using touch. Sorry.')
const obstacles = [
{ x: canvas.width * .5, y: canvas.height.........完整代码请登录后点击上方下载按钮下载查看
网友评论0