《uni-app》一个非canvas的飞机对战小游戏实现-我方飞机实现

2023-05-16

在这里插入图片描述

这是一个没有套路的前端博主,热衷各种前端向的骚操作,经常想到哪就写到哪,如果有感兴趣的技术和前端效果可以留言~博主看到后会去代替大家踩坑的~接下来的几篇都是uni-app的小实战,有助于我们更好的去学习uni-app~ 这是一个系列文章,有兴趣的小伙伴点个赞,点个收藏,关注一下吧~
主页: oliver尹的主页
格言: 跌倒了爬起来就好~
准备篇:https://oliver.blog.csdn.net/article/details/127185461
启动页实现:https://oliver.blog.csdn.net/article/details/127217681
敌机模型实现:https://oliver.blog.csdn.net/article/details/127332264
requestAnimationFrame详解:https://oliver.blog.csdn.net/article/details/127377916

《uni-app》一个非canvas的飞机对战小游戏实现-我方飞机实现

  • 一. 前言
  • 二. 阅读对象与难度
  • 三. 项目地址以及最终效果
  • 四. 我方飞机模型的实现
    • 4.1 分析分析
    • 4.2 我方飞机的样式
    • 4.3 我方飞机生成的实现
    • 4.4 我方飞机坐标的实现
    • 4.5 我方飞机的操控与位移
      • 4.5.1 初始化操作事件
      • 4.5.2 位移函数
  • 五. 阶段性展示
  • 六. 小结

一. 前言

上一篇中主要分享的是 位移这个功能的实现,简单的说就是通过 requestAnimationFrame 这个window对象上提供的原生能力,将坐标改变这个过程与屏幕帧率吻合实现了动画化,这种动画化的效果不管是从性能上,还是从动画的流畅度上都远好于 setTimeoutsetInterval,当然也包括本文中提到的我方飞机,其实现过程也是依靠 requestAnimationFrame 实现的位移;
本文主要分享的内容为我方飞机的实现,耐心看完,或许你会所有收获~

二. 阅读对象与难度

本文难度属于:中级本文中主要实现的我方飞机模型相关的操作,包括我方飞机坐标 位置初始化爆炸动画飞机位移等等,通过文本你可以大致了解到一下内容

  • Vue中的基础知识,包括v-for等常规用法;
  • 我方飞机的操控;
  • requestAnimationFrame 等等

具体内容可以参考以下的思维导图:
在这里插入图片描述

三. 项目地址以及最终效果

文本代码已上传CSDN上的gitCode,有兴趣的小伙伴可以直接clone,项目地址:https://gitcode.net/zy21131437/planegameuni
如果有小伙伴愿意点个星,那就非常感谢了~最终效果图如下:
在这里插入图片描述

四. 我方飞机模型的实现

4.1 分析分析

根据上面的效果图,我们先分析一下要实现的功能:

  1. 首先要实现的就是我方飞机的样式,当然也包括我方飞机被摧毁时的动画;
  2. 我方飞机初始化时候的坐标;
  3. 由于我们这个阶段是仅仅在web网页上进行控制的,因此,在操控上实现的是传统网页游戏那种WASD来控制我方飞机的上下左右移动;

大致上这三个功能在本文这个阶段是最主要的,再来估计一下如果要实现这几个功能可能要用到什么实现逻辑
第一个,我方飞机样式
飞机样式,这一块其实包含两部分:

  • 第一部分,我方飞机,其实就是DOM元素,加上背景图,这一点应该是毋庸置疑的;
  • 第二部分,爆炸动画,当敌机撞到我们控制的飞机时,我方飞机会被摧毁,被摧毁时会有一个爆炸的效果动画,既然是动画那肯定是老传统了,通过 CSS3animation 实现;

第二个,出生坐标
既然是坐标,那坐标肯定是有x和y的,从效果上看,我方飞机处于的位置在于屏幕的下方且处于中间位置;
第三个,位移
重头戏来了,通过之前我们知道移动是靠的 requestAnimationFrame 实现的,那操控呢,就是就是键盘事件,当按下指定的按键后,触发对应的控制位移的方法,这样就实现了对应方向的位移;

4.2 我方飞机的样式

先来看看我放飞机的样式,它的的素材图如下:
在这里插入图片描述
可能看到这会有一点点疑惑,不对啊,怎么是这种图片,我们其实可以这么理解,先看一个示意图
在这里插入图片描述
正常情况下,默认显示最左边的我方飞机素材图,也就是 正常状态下的飞机,当这个飞机模型接收到被摧毁的信号时,触发爆炸动画,此时的我方飞机模型只需要通过 animation 将右侧隐藏的图片分步显示出来,形成一个动画,具体完整代码如下:

<template>
	<view class="plane" :class="getClass"></view>
</template>

<script>
export default {
	props: {
		data: {
			type: Object,
			default: () => {
				return {};
			}
		},
	},
	computed: {
		getClass() {
			const classStyle = [`plane`];
			const explosion = {};
			explosion[`plane_animate`] = this.isExplosion;
			classStyle.push(explosion);
			return classStyle;
		}
	},
};
</script>
<style scoped lang="scss">
.plane {
	position: fixed;
	width: 98px;
	height: 122px;
	z-index: 3;
	background: url(@/static/images/plane.png) no-repeat left top;
}

.plane_animate {
	animation: plane_animate 0.5s steps(5) both infinite;
	-webkit-animation: plane_animate 0.5s steps(5) both infinite;
}

/* 飞机-爆炸效果 */
@keyframes plane_animate {
	0% {
		background-position: 0 0;
	}

	100% {
		background-position: -490px 0;
	}
}

@-webkit-keyframes plane_animate {
	0% {
		background-position: 0 0;
	}

	100% {
		background-position: -490px 0;
	}
}
</style>

完整代码差不多就是如上,我们分布看一下,首先是template

<template>
	<view :class="getClass"></view>
</template>

template部分非常简洁,通过一个名为getClass的计算属性获取完整的类名数组,我们细看一下这个计算属性

getClass() {
  const classStyle = [`plane`];
  const explosion = {};
  explosion[`plane_animate`] = this.isExplosion;
  classStyle.push(explosion);
  return classStyle;
}

通这个属性中可以看到,最终返回出去的是一个数组,数组一共有两项,第一项是一个字符串,第二项是一个对象,举个例子吧,假设this.data.type的值是1,那么这个计算属性最终返回的结果是这个

["plane",{"plane_animate":this.data.isExplosion}]

我们放到css中去看一下,这个两个对应的样式

.plane {
	position: fixed;
	width: 98px;
	height: 122px;
	z-index: 3;
	background: url(@/static/images/plane.png) no-repeat left top;
}

标准DOM样式,宽,高,背景图等等,很明显这一个用于设定DOM基本属性的,另外一个

.plane_animate {
	animation: plane_animate 0.5s steps(5) both infinite;
	-webkit-animation: plane_animate 0.5s steps(5) both infinite;
}

/* 飞机-爆炸效果 */
@keyframes plane_animate {
	0% {
		background-position: 0 0;
	}

	100% {
		background-position: -490px 0;
	}
}

@-webkit-keyframes plane_animate {
	0% {
		background-position: 0 0;
	}

	100% {
		background-position: -490px 0;
	}
}

这是一个动画,关于animation的用法具体可以参考之前的博文,启动页的那一篇,里面有详细的用法解释,简单的说,就是当 this.data.isExplosion 的值为true的时候,plane_animate这个类名将会被添加到这个DOM上,当类名被添加的同时会立即执行名为plane_animate的动画,该动画会在0.5秒内分成5步显示完,动画改变的背景图的坐标,将x轴从0变到了-490px,实现了动画效果;
具体效果图如下:
在这里插入图片描述

4.3 我方飞机生成的实现

飞机的创建流畅和之前敌机的创建流程其实差不多,大致的流程是,我方的文件是一个单独的.vue文件,里面有我方飞机模型的所有参数功能,当参数创建成功后存入飞机数组,通过v-for将飞机数组遍历,其它的类似于是否爆炸等参数的则是通过props传入的飞机组件
在这里插入图片描述

因此,在父级,我们可以这么写

	<!-- 我方飞机 -->
  <template v-if="isStart">
    <Plane v-for="plane in planeData" :data="plane" :params="config" :key="plane.id" @addBullet="addBullet" />
  </template>

  <script>
import Plane from '../view/plane/plane.vue';
export default {
	data() {
		return {
			planeData: [],
		};
	},
	components: { Plane },
	methods: {
		initPlane() {
			const data = {
				width: 98,
				height: 122,
				x: (this.config.winWdith - 98) / 2,
				y: this.config.winHeight - 122,
				id: `plane` + new Date().getTime(),
				isExplosion: true
			};

			this.planeData.push(data);
		}
	}
};
</script>

子组件,也就是我方飞机组件则是如下,通过props将父组件中的飞机配置参数传入子组件

<script>
export default {
	props: {
		data: {
			type: Object,
			default: () => {
				return {};
			}
		},
	},
};
</script>

4.4 我方飞机坐标的实现

从效果图中我们其实可以看到,我方飞机y轴上飞机的生成位置处于屏幕的下半方,在x轴上处于
在这里插入图片描述

因此,实际上我们只需要固定X轴和Y轴的值即可~,先看X轴的代码

(this.config.winWdith - 98) / 2

在x轴上显示获取屏幕的宽度,减掉飞机的宽度再除以2,这就是飞机模型离左边距的距离,Y轴就更简单了

this.config.winHeight - 122

直接屏幕高度减掉一个固定值即可,接着就将参数传递到子组件接收

<template>
	<view class="plane" :class="getClass" :style="{ left: data.x + 'px', top: data.y + 'px' }"></view>
</template>

在子组件中直接 设置left属性 以及 top属性 来控制我方飞机的的初始坐标方位;

4.5 我方飞机的操控与位移

我方飞机的操控是按键盘的WASD来控制飞机的前后左右移动,因此我们先看一下实现思路:
在这里插入图片描述

简单的说就是 飞机模型被加载的时候给当前页面添加一个监听事件,监听整个键盘的按键,当WASD这几个按键被按下的时候 打开对应的开关,因此循环执行飞机位移动画时得到位移方向确认,因此飞机即可向对应方向位移

4.5.1 初始化操作事件

操作事件的初始化,初始化一共分为两种,一种是按键按下时触发控制器为开一种是按键松开时触发控制器为关,先是控制器为开的操作

document.addEventListener('keydown', e => {
  switch (e.keyCode) {
    //up键
    case 38:
      this.keyTop = true;
      break;
    //down键
    case 40:
      this.keyBottom = true;
      break;
    //left键
    case 37:
      this.keyLeft = true;
      break;
    //right键
    case 39:
      this.keyRight = true;
      break;
    default:
      console.log('无效案件,请使用上、下、左、右控制');
  }
});

接着是 控制器关 的代码,如下:

document.addEventListener('keyup', e => {
    switch (e.keyCode) {
      //up键
      case 38:
        this.keyTop = false;
        break;
      //down键
      case 40:
        this.keyBottom = false;
        break;
      //left键
      case 37:
        this.keyLeft = false;
        break;
      //right键
      case 39:
        this.keyRight = false;
        break;
    }
  });

通过绑定 keydownkeyup 开控制开关的开启与关闭;

4.5.2 位移函数

先上代码

move() {
  if (this.keyTop && this.data.y > 0) {
    this.data.y -= 5;
  }
  if (this.keyBottom && this.data.y + 122 < this.params.winHeight) {
    this.data.y += 5;
  }
  if (this.keyLeft && this.data.x > 0) {
    this.data.x -= 5;
  }
  if (this.keyRight && this.data.x + 98 < this.params.winWdith) {
    this.data.x += 5;
  }
},
initMove() {
  this.moveTimer = () => {
    this.move();
    requestAnimationFrame(this.moveTimer);
  };
  this.moveTimer();
},

整个位移有两段,分别 实现位移动画 以及 位移动画的具体实现,一段一段看

initMove() {
  this.moveTimer = () => {
    this.move();
    requestAnimationFrame(this.moveTimer);
  };
  this.moveTimer();
},

这一段很明显,在敌机模型中也被用到了,作用就是通过 requestAnimationFrame 实现了飞机位移动画,位移的具体实现则是通过move()这个函数实现的

move() {
  if (this.keyTop && this.data.y > 0) {
    this.data.y -= 5;
  }
  if (this.keyBottom && this.data.y + 122 < this.params.winHeight) {
    this.data.y += 5;
  }
  if (this.keyLeft && this.data.x > 0) {
    this.data.x -= 5;
  }
  if (this.keyRight && this.data.x + 98 < this.params.winWdith) {
    this.data.x += 5;
  }
}

这里有4个判断,用于判断当前哪个开关是处于开关,当对应的开关处于打开的状态时,那么飞机将在对应方向上实现位移:

  • 第一个if,按键是W时执行,飞机在Y轴上的位移轨迹,每次在Y轴上减少5个像素,当然坐标不能小于0,小于0的话就到屏幕外了;
  • 第二个if,按键是S时执行,飞机在Y轴上的位移轨迹,每次在Y轴上增加5个像素,坐标加飞机本身高度不能大于屏幕高度,大于的话就到屏幕外了;
  • 第三个if,按键是A时执行,飞机在X轴上的位移轨迹,每次在X轴上减少5个像素,X轴上的坐标也不能小于0,小于的话就到屏幕外了;
  • 第四个if,按键是D时执行,飞机在X轴上的位移轨迹,每次在X轴上增加5个像素,坐标加飞机本身宽度不能大于屏幕宽度,大于的话就到屏幕外了;

这就是每次执行 requestAnimationFrame 的内部动画逻辑;

五. 阶段性展示

到这一章节,我们已经实现的效果图如下:
在这里插入图片描述

六. 小结

本文主要概述了我方飞机的实现,主要包含:

  • 飞机样式:其实就是设定好DOM,加入背景图,预设好爆炸的CSS动画;
  • 飞机生成:创建我方飞机配置参数,加入缓存数组,通过v-for指令循环生成飞机;
  • 飞机坐标:我方飞机的坐标位于屏幕的下方,是固定的;
  • 飞机操作位移:位移通过 requestAnimationFrame 实现,并在加载我方飞机时 添加按键监听,监听WASD这几个按键,当这几个按键被按下时,触发对应的位移效果;

但看飞机模型的代码量,也不算复杂,耐心看看还可以明白的,接下来就是碰撞检测了,这一块稍微涉及到了一些计算,当然,问题不大~
都已经看到这里了,点个赞吧,点个关注吧,谢谢

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《uni-app》一个非canvas的飞机对战小游戏实现-我方飞机实现 的相关文章

  • 使用 EaselJS 的无限画布

    有没有办法用 EaselJS 显示无限画布 我已经阅读了使用 Javascript 或 JQuery 执行此操作的方法 但是有什么方法可以使用 EaselJS 进行管理吗 Thanks 您可以使用 JavaScript jQuery 拖放画
  • 在 html5 Canvas 上移动对象

    我使用 fillText 选项在 html5 canvas 对象上放置了一个文本 问题是我需要移动文本位置或更改已渲染文本的颜色 很快我需要知道如何操作画布元素的特定子元素 这将在画布上移动一个小圆圈 var can document ge
  • 在 Android 上使用 Canvas 绘制两条线之间的区域

    我正在为我的应用程序开发一个简单的统计图形类 我尝试过 aChartEngine 和其他更多 但我更喜欢使用我自己的类 我正在使用包含 Android 的 Canvas 类绘制图形 但问题是我不知道如何填充线条和底部边框之间的区域 现在 矩
  • Firefox:image.onload 中的 canvas.toDataURL 但返回透明图像

    我知道图像必须完整 在画布上使用 toDataURL 函数之前其加载已完成 将代码放在 image onload 函数中可确保这一点 还尝试了 canvas getContext 中的 preserveDrawingBuffer true
  • 如何将 TextView 绘制到位图中(无需在显示器上绘制)

    根据主题 将 TextView 截图为位图 可以找到很多帖子 嗯 与我的问题不同的是 首先将视图绘制在显示器上 所有布局和测量工作都已完成 然后绘制到连接到位图的画布中 我只想从头开始创建一个 TextView 而不显示在渲染为位图的显示器
  • 如何在 Android Canvas 上使用大量图元绘制游戏

    我在游戏的每一帧中画了很多线条矩形 这是老式手持电子游戏的娱乐 那些具有用于主游戏的原始点阵显示和用于文本或某些图像的自定义图像的内容 我在虚拟点阵屏幕上有 20x20 大 像素 我还在屏幕上绘制了一些 7 段显示和其他一些东西 根据Tra
  • 保持文本在画布上垂直居中

    我遇到的问题是将用户输入的文本保持在画布元素内垂直居中 我已经构建了一个测试环境来尝试解决这个问题 我在这篇文章中提供了该环境以及小提琴 这是我的代码 HTML Enter Your Text br
  • 缩放图像以适合画布

    我有一个允许用户上传图像的表单 加载图像后 我们对其进行一些缩放 以减小其文件大小 然后再将其传回服务器 为此 我们将其放置在画布上并在那里对其进行操作 此代码将在画布上渲染缩放后的图像 画布尺寸为 320 x 240px ctx draw
  • IE 和 Edge 上绘制图像时出现 IndexSizeError

    我发现某些代码在 Internet Explorer 和 Edge 中失败 但在 Chrome 和 Firefox 中似乎可以完美运行 var image document getElementById myImage var canvas
  • 使 JavaScript 画布矩形可点击

    我正在创建一个简单的计算器 Here http startupsandfinance com online calculator html这是 我几乎完成了基本设计 但我对如何使按钮可点击感到困惑 一个技巧可能是为每个按钮创建一个 div
  • 如何在两个动画画布元素之间进行通信?

    我想在两个动画画布元素之间进行通信 我使用 Adob e Animate CC 制作了两个 html5 canvas js 动画 我已将这两个元素放入一个 html 页面中 我可以成功地从这些动画中调用函数 在下面的代码中成功触发了警报 我
  • Fabric.js canvas.toDataURL() 通过 Ajax 发送到 PHP

    当我需要创建具有透明背景的图像时 我遇到了问题 我还是不知道问题出在fabricjs还是php 当我发送带有彩色背景的图像时 一切正常 当我发送具有透明背景的图像时会出现问题 生成的图像是用黑色背景创建的 那么 让我更好地解释一下 当用户单
  • 通过鼠标和触摸在画布上绘图

    我想在画布上绘图 使用鼠标效果很好 但我必须如何修改代码才能使其在 iPad 或 Nexus 上运行 link http jsfiddle net FgNQk 6 var canvas document getElementById can
  • 在 SVG 中绘制 DOM 对象时如何在 Canvas 中使用 Google 字体?

    根据 Mozilla 的文档 您可以在 Canvas 上绘制复杂的 HTML 例如this https developer mozilla org en US docs Web API Canvas API Drawing DOM obje
  • 将画布输出图像调整为特定尺寸(宽度/高度)

    我有一个大画布 5000x5000 我想拍一张照片并在客户端创建一个缩略图 我可以使用捕获图像canvas toDataURL但我该如何调整它的大小 我必须创建一个新的吗
  • 将画布的鼠标坐标转换为地理坐标

    我正在尝试使用 Python Tkinter 创建包含意大利所有城市的地图Canvas 我在网上找到了一张意大利地图的图片 其中突出显示了一些城市 并将其插入到我的Canvas 之后 我使用一个函数来确定 2 个突出显示的城市的画布坐标 i
  • 尝试使用掩码裁剪位图会抛出 IllegalArgumentException:

    我正在使用以下代码 public void cropSelection Bitmap bitmap annotationBitmap copy annotationBitmap getConfig true Canvas canvas ne
  • KineticJS - 将舞台缩放到视口

    我正在努力将默认分辨率设置为 1366x756 我会根据视口来放大和缩小它 类似于此处显示的示例 http blogs msdn com b davrous archive 2012 04 06 modernizing your html5
  • 正确缩放 Javascript Canvas 游戏

    我正在尝试根据屏幕尺寸动态缩放画布游戏 我了解如何根据屏幕尺寸调整画布大小 但我也想调整内容大小 基本上我希望游戏在每台设备上看起来都一样 我目前遇到的问题是 当拥有 4k 屏幕的人玩游戏时 他们可以轻松看到整个地图 当有人的屏幕非常小时
  • 如何始终将焦点保持在画布上?

    我一直在这个论坛寻找解决方案 但尚未找到 无论我在页面上的哪个位置单击 我都需要始终将焦点放在画布元素上 我有几个按钮 在每个 onclick 事件中我写 document getElementById canvas focus 这确实有效

随机推荐

  • 蓝桥杯分考场

    历届试题 分考场 时间限制 xff1a 1 0s 内存限制 xff1a 256 0MB 问题描述 n个人参加某项特殊考试 为了公平 xff0c 要求任何两个认识的人不能分在同一个考场 求是少需要分几个考场才能满足条件 输入格式 第一行 xf
  • CCF_Markdown(正则表达式)

    试题编号 xff1a 201703 3试题名称 xff1a Markdown时间限制 xff1a 1 0s内存限制 xff1a 256 0MB问题描述 xff1a 问题描述 Markdown 是一种很流行的轻量级标记语言 xff08 lig
  • idea常用的插件

    1 lombok 省略get set方法 2 Alibaba Java Coding Guidelines 阿里的代码规范 3 Translation 谷歌中英文翻译工具 4 CodeGlance 代码迷你缩放图插件 xff0c 快速下拉拖
  • Hadoop windows本地环境安装

    hadoop使用java编写 xff0c 所以windows安装和java一样也需要配置环境变量 一 下载所需文件 JDK下载地址 xff0c jdk1 8下载Hadoop下载 xff0c hadoop下载 xff0c 进去后找到一个版本然
  • Gitlab的安装及使用

    1 GitLab概述 1 1 GitLab介绍 GitLab是利用Ruby on Rails一个开源的版本管理系统 xff0c 实现一个自托管的Git项目仓库 xff0c 可通过Web界面进行访问公开的或者私人项目 GitLab能够浏览源代
  • C语言例程:用二维数组实现矩阵转置

    用二维数组实现矩阵转置 本实例将输入的 3 4 矩阵转置为 4 3 矩阵 xff0c 并输出结果 通过本实例 xff0c 可以学习如何使用二 维数组 实例解析 二维数组的定义 二维数组定义的一般形式为 xff1a 第一部分 基础篇 X227
  • C++头文件的相互引用问题(#include” xxx“使用)

    188条消息 C C 43 43 头文件的引用问题 xff08 include使用 xff09 保护大苹果 CSDN博客 c 43 43 include头文件
  • 树莓派设置自动连接无线网络

    树莓派开机后自动连接无线网络方法 xff0c 亲测有效 1 在任意方法 xff08 无线或有线 xff09 已经连接树莓派的基础上 xff0c 执行该命令 xff0c 意思是编辑wpa supplicant conf这个文件 内容如下 xf
  • 常用快捷键(1)----Windows组合键

    单个的Windows键是打开和隐藏开始菜单 xff0c 功能与 Esc 43 Ctrl 组合键功能相同 下面是一些常用的Windows组合键 xff1a 1 快捷键 xff1a Windows 43 Shift 43 S 功能 xff1a
  • android 获取唯一Id,小小总结一下。仅供参考

    1 获取imei xff1a 前言 xff1a 因传统的移动终端设备标识如国际移动设备识别码 xff08 IMEI xff09 等已被部分国家认定为用户隐私的一部分 xff0c 并存在被篡改和冒用的风险 xff0c 所以在Android 1
  • xib中添加自定义可编辑属性

    IOS开发中 xff0c 有些人喜欢使用xib来进行项目的开发 xff0c 使用xib可以使界面可视化 xff0c 很多控件的属性设置都可以在 xib 中设置 xff0c 减少了代码量 xff1b 同时不用一遍遍的运行程序看效果 xff0c
  • STM32使用寄存器工程模板点亮一个LED灯

    1 环境说明 xff08 1 xff09 使用的是普中STM32F103开发板 xff08 2 xff09 keil 5软件 2 目的 点亮开发板上的LED1灯 3 步骤 xff08 1 xff09 定义一系列寄存器的宏 span clas
  • 结构体数组的使用

    测试源码 span class token macro property span class token directive keyword include span span class token string lt stdio h
  • string字符串拼接

    功能描述 实现在字符串末尾拼接字符串 函数原型 xff1a string amp operator 43 61 const char str 重载 43 61 操作符string amp operator 43 61 const char
  • 千万不要在TX2上安装Qt6

    失败 xff01 Nvidia TX2安装Qt6 和qtCreator7 手把手一步步 千万不要想在TX2上安装QT6 xff01 XCB缺失几乎无解 xff0c 如果有大佬可以指导一下 最开始准备使用交叉编译的方案给TX2写程序 因为台式
  • 最新WSL2 ubuntu环境 cuda,教程,适用于40系显卡

    实验环境 xff1a ubuntu2204 ubuntu1804 xff0c 最新4060笔记本电脑 xff0c 自我觉得是目前比较好用的搭配 xff1a wsl2 43 gnome 43 wsl中的pycharm xff0c 写的很全 x
  • 高分辨率机器安装 Ubuntu虚拟机的屏幕显示字体过小问题的解决

    在网上搜索了很多的解决方案 xff0c 有的试了没效果 xff0c 有的比较麻烦 xff0c 没尝试了 我说一下我的解决方案 问题 xff1a 首先我这个机器是2k屏的 xff0c 分辨率就是会大于 1920x1080 xff1b 然后我是
  • IDEA rebuild project idea如何重新编译项目

    idea如何重新编译项目 1 2 3 4 5 6 7 分步阅读 idea工具可以用于多种语言来开发项目 xff0c 如果是像java这样需要编译之后运行的编程语言 xff0c 每次在运行项目之前都需要对源码进行编译 一般的情况下都是idea
  • Ubuntu更新软件时报"http://cn.archive.ubuntu.com/ubuntu"相关错误的解决方案

    一 问题日志 W 仓库 http cn archive ubuntu com ubuntu xenial Release 没有 Release 文件 N 无法认证来自该源的数据 xff0c 所以使用它会带来潜在风险 N 参见 apt sec
  • 《uni-app》一个非canvas的飞机对战小游戏实现-我方飞机实现

    这是一个没有套路的前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 接下来的几篇都是uni app的小实战