首页 > 其他分享 >创建菜单与游戏界面

创建菜单与游戏界面

时间:2022-12-29 21:35:42浏览次数:100  
标签:canvas 菜单 界面 游戏 parent ctx js vue 页面

本节课任务,实现游戏界面,页面导航栏
先写前端在写后端。从上往下,减少代码重构
导航栏专门拿出来,做组件
前端的框架,模仿一遍
格式:组件名称需要有两个大写字母
bootstrap 实现美工功能
**浏览器页面切换快捷键 ctrl tab **
记得导入 bootstrap 依赖,使样式发生变化
需要五个页面 对战,对局列表,排行版,我的bots,不合法页面
../ 返回上级目录
写好页面 添加到重定向router中

**复习添加组件 使用component,在app.vue中导入 **
router-view 自动根据网址变化 变化规则在router中定义
container-fluid 组件靠左一些 备注 container是一个自定义大小的容器
router-view 当你的路由path 与访问的地址相符时,会将指定的组件替换该 router-view

自己的憨憨错误,在app.vue删掉router view
前后端不分离 单页面的应用
记录router-link标签的使用 router-link :to="{name:'要重定向的标签名字'}"
card组件 将一片区域框起来
**user bot 多一层目录 记得../ **

active 设置选中高亮。首先取得页面使用 useroute。实时计算的函数 computed
**希望使用表达式 属性前用冒号 :class v-bind: **
**游戏环境构建 首先创造基类 AcGameObject **
**js中 of遍历的是值 in 遍历下标 for let obj of XXX **
小结:知识点很多,无论怎么样,都要花很长的时间去学习,去理解。无论是边看边敲代码,还是看一部份,敲一部分代码,都要耐心去理解
现在,自己的原则是,抓取自己需要的,理解框架流程。让自己可以简单持久
这节课的任务 实现两个对象 地图 和墙
js的引用 import 。如果是default,不需要加括号
**设计地图,script设置变量,挂载 template **
创建地图 canvas。在pk页面上,设计不同的页面
MDN 搜索自己需要的html,js前置知识,如canvas
思路梳理 pk页面vue调用 playground。playground包含gameMap和其他。gameMap有vue与js,vue调用js

<template>
    <!-- 建立关联 -->
    <div ref="parent" class="gamemap">
        <canvas ref="canvas">
            <h1>xianyv map route </h1>
        </canvas>
    </div>
</template>

<script>
// 引入GameMap js 。构造 template 与 js的联系。引用需要vue的属性 ref
// 挂载后的入口 onmounted
import {ref,onMounted} from 'vue';
import {GameMap} from "@/assets/scripts/GameMap.js";
export default {
    setup(){
        let parent= ref( null );
        let canvas= ref( null );
        // 当挂载后需要完成的操作
        onMounted(()=>{
            // new一个对象  传参数
            new GameMap(canvas.value.getContext('2d'),parent.value)
        
        });

        return {
            parent,
            canvas
        }
    }
}
</script>

<style scoped>
    div.gamemap{
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
    }
</style>

map.js 问题所在。换成别人的就没问题。玄学问题,this.cols显示Nan

import { AcGameObject } from "./AcGameObject";
// 类名定义错误。晕。是GameMap
export class Game extends AcGameObject{
    // 引入画布  画布的父元素  控制画布的大小
    constructor(ctx,parent){
        // 先执行基类的构造函数
        super();

        this.ctx=ctx;
        this.parent=parent;
        this.L=0;

        this.rows=13;
        this.clos=13;
    }
    
    start(){

    }

    update_size(){
        // 辅助函数  更新边长
        this.L=Math.min(this.parent.clientWidth/this.cols,this.parent.clientHeight/this.rows)
        console.log("xianyv test map " )
        // 求画布的长宽  小正方形的长度乘以列数 行数
        this.ctx.canvas.width=this.L*this.cols;
        this.ctx.canvas.height=this.L*this.rows;
    }

    update(){
        this.update_size();
        this.render();
    }
    // 渲染  把每一帧画到地图上去
    render(){
        this.ctx.fillStyle='green';
        this.ctx.fillRect=(0,0,this.ctx.canvas.width,this.ctx.canvas.height)
    }
}

注意canvas 的坐标系
import {AcGameObject} from "@/assets/scripts/AcGameObject"
https://www.cnblogs.com/lyls/p/7852350.html import加不加大括号的区别

最后总结,多敲多练,抄一遍差不多就能理解大致的思路流程,就能学会了。关闭vue ctrl c

标签:canvas,菜单,界面,游戏,parent,ctx,js,vue,页面
From: https://www.cnblogs.com/spock12138/p/17010816.html

相关文章

  • 用户登录界面(Bootstrap)入门教程01(适合初学者)
    首先博主也是小白,之前没学过前端,花了一晚上做了个登录界面,想分享给大家,比较适合初学者来快速学习,博主以后也好好学基础的前端。首先先上我做的登录界面的图:因为博主水平有限......
  • vue3 变量改变触发界面显示改变
    我们需要使用到 ref 和 reactive 来触发界面绑定变量的更新。reactive的参数对象一般是对象或者数组,能够将复杂数据类型变为响应式数据;它的响应式是深层次的,底层......
  • 【GDOI2017 Day 1 T2】取石子游戏
    Description如果你不想和题面软磨硬泡的话,请。。。。。(以下省略5000字)……给你一个1为根,N个点的树,每个点有权值。定义mex(S)表示不在S集合中最小的非负整数对于每个点,求......
  • 锦州营口游戏网站高防BGP物理机
    我们很难确切掌握攻击活动是否会停止,又将在何时停止。无论我们怎样辗转腾挪,DDoS都如影随形。当时我们曾经试图将服务利用其它IP地址进行发布,但犯罪分子很快就再次跟了上来......
  • 锦州营口游戏网站高防物理机租用
    旗下喜达屋酒店的一个客房预订数据库被黑客入侵,5亿用户信息或已外泄。据悉,这些客人中约有3.27亿人的信息包括如下信息的组合:姓名、邮寄地址、电话号码、电子邮件地址、护照......
  • 第十二章 GUI界面编程
    实例01:使用wx.StaticText输出Python之禅 使用StaticText类输出中文版的Python之禅。 代码如下:#_*-coding:utf-8_*_importwxclassMyFrame(wx.Frame):d......
  • 小游戏赛道的变现方式是什么?
    根据《2022微信小游戏增长白皮书》显示,目前微信小游戏开发者数量已经超过10万人次,特别是在持续出现小游戏爆火社交平台的趋势下,小游戏发展势头强劲。此外仅看微信小游戏的商......
  • 如何基于FinClip实现Android系统在自有App中引入小游戏
    ​实现效果:在自有App中实现小程序游戏运行使用技术:FinClip(​​下载/升级最新版IDE​​即可使用)测试机:Android测试Demo:​​飞机大战​​在 Android 项目中引入FinClip......
  • vue动态菜单创建icon
    如图,左侧的菜单是动态生成的,前面的icon图标也要动态创建 实现方法:使用vue的 createVNode定义一个生成icon的文件:  createIcon.jsimport*asiconsfrom"@......
  • 二、PO模型之注册界面组装成完整的自动化case-5
    base层:基础层。获取配置文件中的元素值。page层:页面层。页面就是元素。将读取页面信息放在page中,page给handle提供页面元素。handle层:定义方法,调用page层。即处理page。......