当前位置: 首页 > wzjs >正文

常宁网站开发域名seo站长工具

常宁网站开发,域名seo站长工具,镇江网站关键词优化,永久持续更新说明:我计划用angular做一款打地鼠的小游戏, 打地鼠游戏实现文档 🎮 游戏逻辑 ​游戏场景 采用 3x3 网格布局的 9 个地鼠洞​核心机制 地鼠随机从洞口弹出点击有效目标获得积分30 秒倒计时游戏模式 ​难度系统 简单模式:生成间…

说明:我计划用angular做一款打地鼠的小游戏,

打地鼠游戏实现文档

🎮 游戏逻辑

  • 游戏场景
    采用 3x3 网格布局的 9 个地鼠洞
  • 核心机制
    • 地鼠随机从洞口弹出
    • 点击有效目标获得积分
    • 30 秒倒计时游戏模式
  • 难度系统
    • 简单模式:生成间隔 1.5s / 停留 1s
    • 普通模式:生成间隔 1s / 停留 0.8s
    • 困难模式:生成间隔 0.8s / 停留 0.6s

⚙️ 主要功能

  • 游戏控制
    • 开始/结束游戏按钮
    • 游戏进行中禁止重复启动
  • 状态显示
    • 实时分数更新
    • 动态倒计时显示
  • 交互系统
    • 可视化难度选择按钮
    • 点击命中即时反馈
  • 动画效果
    • 地鼠弹出/收回动画
    • 按钮激活状态指示

🔧 实现细节

效果图

在这里插入图片描述

技术实现

step1:C:\Users\wangrusheng\WebstormProjects\untitled4\src\app\mouse\mouse.component.ts

import { Component } from '@angular/core';
import {NgForOf, NgIf, TitleCasePipe} from '@angular/common';@Component({selector: 'app-mouse',imports: [NgForOf,NgIf,TitleCasePipe],templateUrl: './mouse.component.html',styleUrl: './mouse.component.css'
})
export class MouseComponent {score = 0;timeLeft = 30;isPlaying = false;holes = Array(9).fill(false);private gameTimer: any;private moleTimer: any;// 新增类型安全难度列表readonly difficultyLevels = ['easy', 'medium', 'hard'] as const;difficulty: 'easy' | 'medium' | 'hard' = 'medium';// 根据难度调整参数get intervalTime() {return {easy: 1500,medium: 1000,hard: 800}[this.difficulty];}get activeTime() {return {easy: 1000,medium: 800,hard: 600}[this.difficulty];}startGame() {if (this.isPlaying) return;this.isPlaying = true;this.score = 0;this.timeLeft = 30;// 游戏倒计时this.gameTimer = setInterval(() => {this.timeLeft--;if (this.timeLeft <= 0) {this.endGame();}}, 1000);// 地鼠生成this.moleTimer = setInterval(() => {this.popUpMole();}, this.intervalTime);}endGame() {clearInterval(this.gameTimer);clearInterval(this.moleTimer);this.isPlaying = false;this.holes = this.holes.map(() => false);}popUpMole() {if (!this.isPlaying) return;const index = Math.floor(Math.random() * 9);this.holes[index] = true;setTimeout(() => {this.holes[index] = false;}, this.activeTime);}whackMole(index: number) {if (this.holes[index] && this.isPlaying) {this.score += 10;this.holes[index] = false;}}setDifficulty(level: 'easy' | 'medium' | 'hard') {this.difficulty = level;}
}

step2:
C:\Users\wangrusheng\WebstormProjects\untitled4\src\app\mouse\mouse.component.html

<!-- mouse.component.html -->
<div class="game-card"><div class="game-container"><div class="game-info"><div class="info-group"><div class="info-item"><span class="label">Score:</span><span class="value">{{ score }}</span></div><div class="info-item"><span class="label">Time:</span><span class="value">{{ timeLeft }}</span></div></div><div class="difficulty-group"><span class="label">Difficulty:</span><div class="button-group"><button*ngFor="let diff of difficultyLevels"[class.active]="difficulty === diff"(click)="setDifficulty(diff)"class="difficulty-btn">{{ diff | titlecase }}</button></div></div><buttonclass="start-btn"(click)="startGame()"[disabled]="isPlaying">{{ isPlaying ? 'Playing...' : 'Start Game' }}</button></div><div class="game-board"><div*ngFor="let hole of holes; let i = index"class="hole"[class.active]="hole"(click)="whackMole(i)"><div class="mole" *ngIf="hole"></div></div></div></div>
</div>

step3:
C:\Users\wangrusheng\WebstormProjects\untitled4\src\app\mouse\mouse.component.css

/* mouse.component.css */
.game-card {background: #ffffff;border-radius: 16px;box-shadow: 0 10px 30px rgba(0,0,0,0.1);padding: 24px;max-width: 800px;margin: 2rem auto;transition: transform 0.3s ease;
}.game-card:hover {transform: translateY(-2px);
}.game-container {text-align: center;
}.game-info {margin-bottom: 32px;display: flex;flex-direction: column;gap: 24px;
}.info-group {display: flex;justify-content: center;gap: 32px;margin-bottom: 16px;
}.info-item {background: #f8f9fa;padding: 12px 24px;border-radius: 8px;box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}.label {font-weight: 600;color: #6c757d;margin-right: 8px;
}.value {font-weight: 700;color: #495057;
}.difficulty-group {display: flex;flex-direction: column;gap: 12px;align-items: center;
}.button-group {display: flex;gap: 12px;
}button {border: none;border-radius: 8px;padding: 10px 20px;font-weight: 600;cursor: pointer;transition: all 0.2s ease;text-transform: uppercase;letter-spacing: 0.5px;
}.difficulty-btn {background: #e9ecef;color: #495057;min-width: 90px;
}.difficulty-btn.active {background: #4e66f8;color: white;box-shadow: 0 4px 6px rgba(78,102,248,0.2);
}.start-btn {background: #20c997;color: white;padding: 14px 32px;font-size: 1.1rem;margin-top: 16px;
}.start-btn:disabled {background: #ced4da;box-shadow: none;
}.start-btn:not(:disabled):hover {background: #1aa179;box-shadow: 0 4px 14px rgba(26,161,121,0.3);
}.game-board {display: grid;grid-template-columns: repeat(3, 1fr);gap: 20px;max-width: 600px;margin: 0 auto;padding: 20px;background: #f8f9fa;border-radius: 12px;
}.hole {width: 150px;height: 150px;background: #654321;border-radius: 50%;position: relative;overflow: hidden;cursor: pointer;transition: transform 0.2s, background 0.3s;
}.hole:hover {transform: scale(1.02);
}.hole.active {background: #8b4513;box-shadow: 0 8px 16px rgba(0,0,0,0.2);
}.mole {position: absolute;width: 80%;height: 80%;background: #808080;border-radius: 50%;bottom: -30%;left: 10%;transition: bottom 0.3s;animation: pop-up 0.3s forwards;
}@keyframes pop-up {from { bottom: -30%; }to { bottom: 10%; }
}

end

http://www.dtcms.com/wzjs/31877.html

相关文章:

  • 负责公司网站的日常管理seo网络优化推广
  • 网站如何做关键字收录优化网站关键词优化
  • 网站开发设计比赛百度提交工具
  • 云溪网络建站宝盒天津百度网站排名优化
  • 网站权重是什么意思构建新发展格局
  • 如何增加新网站的百度收录百度搜索页
  • wordpress模板专业版seo软件推荐
  • 做网站要多钱深圳网站seo优化
  • 个人网站 如何做推广搜索引擎广告图片
  • 一起做网站女装夏季裙网站怎么被收录
  • wordpress游客聊天插件seo相关ppt
  • 农业公园网站建设新冠咳嗽一般要咳多少天
  • 线上免费编程课网络seo关键词优化技巧
  • 网站禁用复制深圳市文化广电旅游体育局
  • 关于做网站的搞笑段子信阳搜索引擎优化
  • web网站扫描工具怎么制作自己公司网站
  • 网站建设推广人员中国今天刚刚发生的新闻
  • 图文网站模版seo实战密码电子书
  • 做网站小语种翻译多少钱长沙网络公关公司
  • 5118站长平台品牌宣传推广文案
  • 东莞专业做淘宝网站推广湖南长沙疫情最新情况
  • 要给公司做一个网站怎么做的成都达洱狐网络科技有限公司
  • 手机搭建网站教程视频教程网站seo推广计划
  • 备案上个人网站和企业网站的区别安徽网站建设优化推广
  • 前端网站建设电商培训心得体会
  • 怎样做网商网站seo上海网站推广
  • 石家庄网站建设培训班优化设计电子课本
  • 铜陵app网站做招聘百度推广首页
  • 长沙点梦网站建设信息流广告是什么
  • 管理系统平台seo专家是什么意思