当前位置:首页 > JavaScript

js实现宠物

2026-04-06 01:38:16JavaScript

使用JavaScript实现宠物交互功能

创建一个简单的宠物交互页面需要HTML、CSS和JavaScript的结合。以下是一个基础的实现方式,展示如何在网页上添加一个可交互的宠物元素。

HTML结构

<div id="pet-container">
  <div id="pet"></div>
</div>
<button id="feed-btn">喂食</button>
<button id="play-btn">玩耍</button>

CSS样式

#pet-container {
  width: 200px;
  height: 200px;
  position: relative;
}

#pet {
  width: 100px;
  height: 100px;
  background-color: #ffcc00;
  border-radius: 50%;
  position: absolute;
  transition: all 0.3s ease;
}

JavaScript逻辑

const pet = document.getElementById('pet');
const feedBtn = document.getElementById('feed-btn');
const playBtn = document.getElementById('play-btn');

let happiness = 50;
let hunger = 50;

function updatePet() {
  pet.style.transform = `scale(${1 + happiness * 0.01})`;
  pet.style.backgroundColor = hunger > 70 ? '#ff6666' : '#ffcc00';
}

feedBtn.addEventListener('click', () => {
  hunger = Math.max(0, hunger - 20);
  happiness = Math.min(100, happiness + 10);
  updatePet();
});

playBtn.addEventListener('click', () => {
  happiness = Math.min(100, happiness + 20);
  hunger = Math.min(100, hunger + 10);
  updatePet();
});

// 定期更新状态
setInterval(() => {
  happiness = Math.max(0, happiness - 1);
  hunger = Math.min(100, hunger + 1);
  updatePet();
}, 5000);

实现更复杂的宠物行为

要创建更真实的宠物行为,可以添加以下功能:

随机移动

function moveRandomly() {
  const container = document.getElementById('pet-container');
  const maxX = container.clientWidth - pet.clientWidth;
  const maxY = container.clientHeight - pet.clientHeight;

  const newX = Math.floor(Math.random() * maxX);
  const newY = Math.floor(Math.random() * maxY);

  pet.style.left = `${newX}px`;
  pet.style.top = `${newY}px`;
}

setInterval(moveRandomly, 3000);

状态显示

function showStatus() {
  console.log(`快乐度: ${happiness}, 饥饿度: ${hunger}`);
  if(hunger > 80) {
    alert('宠物很饿!');
  }
}

使用Canvas创建动画宠物

对于更高级的实现,可以使用Canvas绘制动画宠物:

js实现宠物

const canvas = document.createElement('canvas');
canvas.width = 400;
canvas.height = 400;
document.body.appendChild(canvas);

const ctx = canvas.getContext('2d');
let x = 200, y = 200;

function drawPet() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);

  // 绘制身体
  ctx.beginPath();
  ctx.arc(x, y, 50, 0, Math.PI * 2);
  ctx.fillStyle = '#ffcc00';
  ctx.fill();

  // 绘制眼睛
  ctx.beginPath();
  ctx.arc(x-20, y-15, 10, 0, Math.PI * 2);
  ctx.arc(x+20, y-15, 10, 0, Math.PI * 2);
  ctx.fillStyle = '#000';
  ctx.fill();

  // 根据心情绘制嘴巴
  ctx.beginPath();
  if(happiness > 70) {
    ctx.arc(x, y+10, 20, 0, Math.PI);
  } else {
    ctx.arc(x, y+20, 20, Math.PI, 0);
  }
  ctx.stroke();
}

function animate() {
  x += (Math.random() - 0.5) * 5;
  y += (Math.random() - 0.5) * 5;

  // 边界检查
  x = Math.max(50, Math.min(canvas.width-50, x));
  y = Math.max(50, Math.min(canvas.height-50, y));

  drawPet();
  requestAnimationFrame(animate);
}

animate();

这些代码示例展示了如何用JavaScript创建基础的宠物交互系统。可以根据需要扩展更多功能,如添加更多状态参数、实现更复杂的动画或增加用户互动方式。

标签: 宠物js
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…