057 Project Setup & First Methods

057 Project Setup & First Methods_第1张图片

示例

index.html



  
    
    
    Vue Basics
    
    
    
    
  
  
    

Monster Slayer

Monster Health

Your Health

Battle Log

    app.js

    function getRandomValue(min, max) {
        return Math.floor(Math.random() * (max - min)) + min;
    }
    
    const math = Math;
    
    const app = Vue.createApp({
        data() {
            return {
                playerHealth: 100,
                monsterHealth: 100,
            };
        },
        methods: {
            attackMonster() {
                const attackValue = getRandomValue(5, 12);
                if (this.monsterHealth > 0) {
                    this.monsterHealth -= attackValue;
                    this.attackPlayer();
                    if (this.monsterHealth < 0) {
                        this.monsterHealth = 0;
                    }
                }
            },
            attackPlayer() {
                const attackValue = getRandomValue(8, 15);
                if (this.playerHealth > 0) {
                    this.playerHealth -= attackValue;
                    if (this.playerHealth < 0) {
                        this.playerHealth = 0;
                    }
                }
            },
            specialAttack() {
                this.monsterHealth -= 20;
            },
            heal() {
                if (this.playerHealth < 100) {
                    this.playerHealth += 10;
                }
            },
    
        },
    });
    
    app.mount('#game');

    styles.css

    * {
      box-sizing: border-box;
    }
    
    html {
      font-family: 'Jost', sans-serif;
    }
    
    body {
      margin: 0;
    }
    
    header {
      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
      padding: 0.5rem;
      background-color: #880017;
      color: white;
      text-align: center;
      margin-bottom: 2rem;
    }
    
    section {
      width: 90%;
      max-width: 40rem;
      margin: auto;
    }
    
    .healthbar {
      width: 100%;
      height: 40px;
      border: 1px solid #575757;
      margin: 1rem 0;
      background: #fde5e5;
    }
    
    .healthbar__value {
      background-color: #00a876;
      width: 100%;
      height: 100%;
    }
    
    .container {
      text-align: center;
      padding: 0.5rem;
      margin: 1rem auto;
      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
      border-radius: 12px;
    }
    
    #monster h2,
    #player h2 {
      margin: 0.25rem;
    }
    
    #controls {
      display: flex;
      flex-direction: row;
      flex-wrap: wrap;
      align-items: center;
      justify-content: center;
    }
    
    button {
      font: inherit;
      border: 1px solid #88005b;
      background-color: #88005b;
      color: white;
      padding: 1rem 2rem;
      border-radius: 12px;
      margin: 1rem;
      width: 12rem;
      cursor: pointer;
      box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.26);
    }
    
    button:focus {
      outline: none;
    }
    
    button:hover,
    button:active {
      background-color: #af0a78;
      border-color: #af0a78;
      box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.26);
    }
    
    button:disabled {
      background-color: #ccc;
      border-color: #ccc;
      box-shadow: none;
      color: #3f3f3f;
      cursor: not-allowed;
    }
    
    #log ul {
      list-style: none;
      margin: 0;
      padding: 0;
    }
    
    #log li {
      margin: 0.5rem 0;
    }
    
    .log--player {
      color: #7700ff;
    }
    
    .log--monster {
      color: #da8d00;
    }
    
    .log--damage {
      color: red;
    }
    
    .log--heal {
      color: green;
    }

    你可能感兴趣的:(03,Vue3,-,Udemy,Top,1,vue.js,前端,javascript,Vue3)