js实现一个Wildfire小游戏代码
代码语言:html
所属分类:游戏
代码描述:js实现一个Wildfire小游戏代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<link rel='stylesheet' href='https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@400;700&family=Source+Serif+Pro:ital@0;1&display=swap'>
<style>
*, *::before, *::after {
box-sizing: border-box;
}
* {
margin: 0;
}
html, body {
height: 100%;
}
body {
line-height: 1.5;
-webkit-font-smoothing: antialiased;
}
img, picture, video, canvas, svg {
display: block;
max-width: 100%;
}
input, button, textarea, select {
font: inherit;
}
p, h1, h2, h3, h4, h5, h6 {
overflow-wrap: break-word;
}
#root, #__next {
isolation: isolate;
}
:root {
--color-primary: #ACB49C;
--color-neutral-light: #EAE4D4;
--color-neutral: #E4D9BC;
--color-neutral-dark: #D3C6A4;
--color-black: #332E20;
--color-white: #fff;
--sans-serif: "Source Sans Pro", sans-serif;
--serif: "Source Serif Pro", serif;
}
html.dark:root {
--color-primary: #67896F;
--color-neutral-light: #222F25;
--color-neutral: #0E130F;
--color-neutral-dark: #0A0E0B;
--color-orange: #DC8A3E;
--color-red: #C13333;
}
html.dark body {
background-color: var(--color-neutral);
}
html.dark h1 {
color: var(--color-primary);
}
html.dark .numbering__value {
color: var(--color-primary);
}
html.dark .grid {
background-color: var(--color-neutral-light);
border-color: var(--color-neutral-light);
}
html.dark .grid__square {
background-color: var(--color-neutral-dark);
}
html.dark .grid__square:hover {
background-color: var(--color-neutral);
}
html.dark .grid__square--home svg {
stroke: var(--color-white);
}
html.dark .grid__square--slash svg {
filter: drop-shadow(0 0 8px var(--color-orange));
stroke: var(--color-orange);
}
html.dark .grid__square--dig svg, html.dark .grid__square--douse svg {
stroke: var(--color-primary);
}
html.dark .grid__square--fire > svg {
stroke: var(--color-orange);
}
html.dark .grid__square--fire div svg {
filter: drop-shadow(0 0 8px var(--color-red));
stroke: var(--color-red);
}
html.dark .grid__square--fire.grid__square--home > svg {
filter: drop-shadow(0 0 8px var(--color-red));
stroke: var(--color-red);
}
html.dark .grid__square--coordinates {
outline-color: var(--color-primary);
}
html.dark .actions {
background-color: var(--color-neutral-dark);
border-color: var(--color-neutral-light);
color: var(--color-primary);
}
html.dark .actions__item svg {
stroke: var(--color-primary);
}
html.dark .message {
background-color: var(--color-neutral-dark);
border-color: var(--color-neutral-light);
color: var(--color-primary);
}
@media (hover: hover) {
html.dark .menu .menu__item:hover {
background-color: var(--color-neutral-light);
}
html.dark .menu .menu__item:hover svg {
stroke: var(--color-white);
}
}
html.dark .menu .menu__item--active {
background-color: var(--color-neutral-light);
}
html.dark .menu .menu__item--active svg {
stroke: var(--color-white);
}
html.dark .menu svg {
stroke: var(--color-primary);
}
html {
height: -webkit-fill-available;
}
body {
background-color: var(--color-neutral);
font-family: var(--sans-serif);
display: grid;
place-items: center;
margin: 0;
min-height: 100vh;
min-height: -webkit-fill-available;
position: relative;
}
h1 {
font-family: var(--serif);
font-weight: normal;
}
#game {
align-items: center;
display: flex;
flex-direction: column;
height: 100%;
justify-content: center;
padding: 24px 0;
position: relative;
}
#board {
position: relative;
}
.dice {
display: flex;
gap: 8px;
margin-bottom: 40px;
margin-top: auto;
padding: 8px 0;
position: relative;
}
.dice__cube {
background-color: var(--color-white);
border: 2px solid var(--color-black);
border-radius: 4px;
height: 48px;
width: 48px;
}
.dice__cube[data-value="1"] {
background-image: radial-gradient(circle 6px at center, black 50%, transparent 50%);
}
.dice__cube[data-value="2"] {
background-image: radial-gradient(circle 6px at 14px 14px, black 50%, transparent 50%), radial-gradient(circle 6px at calc(100% - 14px) calc(100% - 14px), black 50%, transparent 50%);
}
.dice__cube[data-value="3"] {
background-image: radial-gradient(circle 6px at calc(100% - 12px) 12px, black 50%, transparent 50%), radial-gradient(circle 6px at center, black 50%, transparent 50%), radial-gradient(circle 6px at 12px calc(100% - 12px), black 50%, transparent 50%);
}
.dice__cube[data-value="4"] {
background-image: radial-gradient(circle 6px at 14px 14px, black 50%, transparent 50%), radial-gradient(circle 6px at calc(100% - 14px) 14px, black 50%, transparent 50%), radial-gradient(circle 6px at 14px calc(100% - 14px), black 50%, transparent 50%), radial-gradient(circle 6px at calc(100% - 14px) calc(100% - 14px), black 50%, transparent 50%);
}
.dice__cube[data-value="5"] {
background-image: radial-gradient(circle 6px at 14px 14px, black 50%, transparent 50%), radial-gradient(circle 6px at calc(100% - 14px) 14px, black 50%, transparent 50%), radial-gradient(circle 6px at center, black 50%, transparent 50%), radial-gradient(circle 6px at 14px calc(100% - 14px), black 50%, transparent 50%), radial-gradient(circle 6px at calc(100% - 14px) calc(100% - 14px), black 50%, transparent 50%);
}
.dice__cube[data-value="6"] {
background-image: radial-gradient(circle 6px at 14px 12px, black 50%, transparent 50%), radial-gradient(circle 6px at calc(100% - 14px) 12px, black 50%, transparent 50%), radial-gradient(circle 6px at 14px 50%, black 50%, transparent 50%), radial-gradient(circle 6px at calc(100% - 14px) 50%, black 50%, transparent 50%), radial-gradient(circle 6px at 14px calc(100% - 12px), black 50%, transparent 50%), radial-gradient(circle 6px at calc(100% - 14px) calc(100% - 12px), black 50%, transparent 50%);
}
.numbering {
list-style: none;
position: absolute;
}
.numbering--columns {
bottom: 100%;
display: grid;
grid-template-columns: repeat(6, 1fr);
padding: 8px 0;
text-align: center;
width: 100%;
}
.numbering--rows {
align-items: center;
display: grid;
grid-template-rows: repeat(6, 1fr);
height: 100%;
padding: 0 16px;
right: 100%;
text-align: center;
}
.numbering__value {
font-family: var(--serif);
font-style: italic;
}
.grid {
background-color: var(--color-primary);
border: 2px solid var(--color-black);
border-radius: 4px;
display: grid;
gap: 2px;
grid-template-columns: repeat(6, 40px);
grid-template-rows: repeat(6, 40px);
}
.grid__square {
background-color: var(--color-neutral-light);
cursor: pointer;
display: grid;
}
.grid__square:nth-child(1) {
border-top-left-radius: 4px;
}
.grid__square:nth-child(6) {
border-top-right-radius: 4px;
}
.grid__square:nth-child(31) {
border-bottom-left-radius: 4px;
}
.grid__square:nth-child(36) {
border-bottom-right-radius: 4px;
}
@media (hover: hover) {
.grid__square:hover {
background-color: var(--color-neutral);
}
}
.grid__square--coordinates {
outline: 2px solid var(--color-black);
}
.grid__square svg {
animation: showSVG 0.5s ease forwards;
clip-path: polygon(-2px -2px, -2px -2px, -2px calc(100% + 2px), -2px calc(100% + 2px));
grid-area: 1/1/1/1;
pointer-events: none;
stroke: var(--color-black);
user-select: none;
}
.grid__square div {
grid-area: 1/1/1/1;
}
@keyframes showSVG {
to {
clip-path: polygon(-2px -2px, calc(100% + 2px) -2px, calc(100% + 2px) calc(100% + 2px), -2px calc(100% + 2px));
}
}
.actions {
align-items: center;
background-color: var(--color-neutral-light);
border: 2px solid var(--color-black);
border-radius: 4px;
display: flex;
gap: 0;
margin-bottom: auto;
margin-top: 16px;
padding: 0 2px 0 16px;
width: 100%;
}
.actions--hidden {
display: none;
}
.actions__text {
font-weight: bold;
margin-right: auto;
}
.actions__item--disabled {
opacity: 0.25;
}
.actions__item--douse svg {
padding: 2px;
}
.actions__item svg {
height: 40px;
stroke: var(--color-black);
width: 40px;
}
.message {
align-items: center;
background-color: var(--color-neutral-light);
border: 2px solid var(--color-black);
border-radius: 4px;
display: none;
font-weight: bold;
gap: 0;
justify-content: space-between;
margin-bottom: auto;
margin-top: 16px;
padding: 8px 16px;
width: 100%;
}
.message--active {
display: flex;
}
.menu {
display: flex;
gap: 8px;
padding-top: 24px;
position: relative;
}
.menu__item {
background-color: var(--color-neutral-dark);
border-radius: 50%;
cursor: pointer;
display: grid;
height: 40px;
place-content: center;
user-select: none;
width: 40px;
}
@media (hover: hover) {
.menu__item:hover {
background-color: var(--color-black);
}
.menu__item:hover svg {
stroke: var(--color-primary);
}
}
.menu__item--active {
background-color: var(--color-neutral-dark);
}
.menu__item svg {
height: 24px;
pointer-events: none;
stroke: var(--color-black);
width: 24px;
}
</style>
</head>
<body >
<main id="game">
<h1>Wildfire</h1>
<div class="dice">
<div class="dice__cube dice__cube--column" data-value="1"></div>
<div class="dice__cube dice__cube--row" data-value="1"></div>
</div>
<div id="board">
<ul class="numbering numbering--columns">
<li class="numbering__value">1</li>
<li class="numbering__value">2</li>
<li class="numbering__value">3</li>
<li class="numbering__value">4</li>
<li class="numbering__value">5</li>
<li class="numbering__value">6</li>
</ul>
<ul class="numbering numbering--rows">
<li class="numbering__value">1</li>
<li class="numbering__value">2</li>
<li class="numbering__value">3</li>
<li class="numbering__value">4</li>
<li class="numbering__value">5</li>
<li class="numbering__value">6</li>
</ul>
<div class="grid">
<div class="grid__square"></div>
<div class="grid__square"></div>
<div class="grid__square"></div>.........完整代码请登录后点击上方下载按钮下载查看
网友评论0