js实现一个Wildfire小游戏代码

代码语言:html

所属分类:游戏

代码描述:js实现一个Wildfire小游戏代码

代码标签: 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&amp;family=Source+Serif+Pro:ital@0;1&amp;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