自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

游行天涯

为当初的美好而努力

  • 博客(42)
  • 收藏
  • 关注

原创 C++开发控制台小游戏之旅(2)——《五子棋》

相信每一位學編程的朋友,都曾有一顆游戲夢想,希望能親手打造出屬於自己的游戲!如果我可以創作一款結合AR技術的、如**動漫《游戲王》**中那樣進行決鬥的游戲,該有多好!游戲背景《五子棋》這款游戲,從我讀小學起就經常在玩,與小夥伴們一起在課餘時間一決高下,不亦樂乎!曾經的美好,只留下回憶,但我相信我的人生始終會與快樂相伴……如今我萌發心思,欲抽空發展一下愛好,自己動手逐步打造出一款可玩的小游戲,同時也為廣大游戲編程愛好者們提供略微的參考,一起爲了夢想而前行!本游戲采用純C++語言進行編寫,可在Wi.

2020-09-29 11:55:12 152161 1

原创 C++开发控制台小游戏之旅(1)——《伏魔记》

相信每一位學編程的朋友,都曾有一顆游戲夢想,希望能親手打造出屬於自己的游戲!如果我可以創作一款結合AR技術的、如**動漫《游戲王》**中那樣進行決鬥的游戲,該有多好!游戲背景《伏魔記》曾是一款可在步步高電子詞典上運行的RPG游戲,我在上小學六年級的時候對其愛不釋手,日夜把玩,終於通關,仍意猶未盡。如今我萌發心思,欲抽空發展一下愛好,自己動手逐步打造出一款可玩的小游戲,同時也為廣大游戲編程愛好者們提供略微的參考,一起爲了夢想而前行!本游戲采用純C++語言進行編寫,可在Windows控制臺或Lin.

2020-09-23 15:58:36 151712 3

原创 读取/写入位置发生访问冲突

问题描述C/C++程序运行时提示“读取/写入位置发生访问冲突”。例如:0x00007FFF33515D43 (swscale-4.dll) (QTDemo0.exe 中)处的第一机会异常: 0xC0000005: 读取位置 0x0000000000000040 时发生访问冲突。如图所示:产生原因一般都是由于发生异常处的代码中,涉及到数据的读取或写入,并且访问数据时使用的是指...

2016-06-08 15:41:20 112954 8

原创 ubuntu 23开机界面美化教程

文件,向其中添加一行配置项,以应用GRUB主题;中下载GRUB主题包(tar.gz格式),如。解压下载得到的压缩包,得到。目录不存在,则新建一个);

2024-03-11 17:46:45 392

原创 【无标题】

修改vim配置,使其更好用!

2024-02-03 09:49:24 264

原创 误改系统文件导致无法启动Ubuntu

解决grub导致的无法启动ubuntu系统的问题。

2024-02-03 09:37:15 312

原创 在QML中如何使用首字母小写(蛇形)命名法

最近在学习研究QML,想要自定义组件、信号、属性等,但如何对.qml文件、变量命名却是个问题。习惯了蛇形命名规范后,再让我回到驼峰命名规范,多少是不愿意的。为了坚守信仰,我翻遍了各大技术网站,然而得到的答复始终就那几篇被转载无数次的文章,几乎都是让用首字母大写的命名规范。算了,自己摸索试验吧!

2023-09-15 14:57:05 132

原创 【微信小程序】Error: 未找到`a/game.json`

编译微信小游戏时,模拟器报错。

2023-03-21 15:55:53 300

原创 【微信小程序】`add_y()` is not defined

add_y()

2023-03-21 15:55:02 168

原创 【微信小程序】Error: app.json: 在项目根目录未找到 app.json

该文件是微信小程序所特有的文件,而微信小游戏中需要的是。在导入项目时,需要注意选择项目类型,不要混淆。导入微信小游戏项目后,编译程序,报错。列表中移除该项目,然后切换到。tab栏,并导入该项目。在项目根目录中,未找到。

2023-03-21 15:54:36 311

原创 【微信小程序】双缓冲图片滚动,一次循环后图片间出现黑线

目前是将图片尺寸与视口尺寸保持相同,在图片位置尺寸计算后,无法完全铺满整个视口。结果发现,当2张图片均经历了一次循环后,图片之间会出现一条黑线间隔。当图片超出视口时,就将其移动到视口上方,不断重复此过程。使用2张图片精灵,来绘制窗口背景,定时向下滚动。让绘制出的图片尺寸,略大于视口尺寸即可。

2023-03-21 15:50:22 165

原创 【微信小程序】TypeError: Cannot read property ‘init_members‘ of undefined

【微信小程序】TypeError: Cannot read property 'init_members' of undefined。

2023-03-21 15:47:54 151

原创 【微信小程序】TypeError: _weappAdapter.Image is not a constructor

微信小程序开发过程中,常见问题&解决方法

2023-03-21 15:40:41 459

原创 Qt常见问题的解决方法

使用QWidget进行视频播放,出现窗口闪烁解决方法    对QWidget进行属性设置,防止自动刷新窗口。setUpdatesEnabled(false);自定义控件OptionalButton的半透明背景影响了QPixmap问题描述    用setStyleSheet()设置OptionalButton的背景色为半透明,结果发现OptionalButton控件中的QPixmap也被半透明背景所影响。原因    重写了OptionalButton的paintEvent()方法

2021-10-15 15:25:06 122002

原创 最简单的方法:实现QWidget窗体的鼠标移动功能

最简单的方法:实现QWidget窗体的鼠标移动功能应用场景自定义QWidget派生类用鼠标来移动窗体方法继承QWidget类重写mousePressEvent()、mouseMoveEvent()方法使用QPoint成员变量来保存鼠标按下时的偏移位置ExampleMyWidget.h#include <QWidget>#include <QMouseEvent>class MyWidget : public QWidget{

2021-08-19 14:09:36 127304

原创 C++模板类头、源文件分离方法(2)

C++模板类头、源文件分离方法(2)方法一按C++ primer中的包含模型,在定义模板类的头文件a.h中的末行添加语句:#include "a.cpp"在使用模板的测试文件test.cpp中包含头文件即可:#include "a.h"Examplesa.htemplate <typename T>class A{public: T add(T a, T b);};// Include `.cpp`#include "a.cpp"a.cpp

2021-07-29 10:23:20 128607

原创 QWidget获取外部控件的鼠标点击事件

背景有时候我们想自定义Qt控件(派生自QWidget),实现类似Qt::Popup属性的弹窗,同时避免Qt::Popup属性所带来的***副作用***(阴影效果、鼠标事件透传)。涉及技术事件过滤器:eventFilter()窗体属性设置:setWindowFlags()、setAttribute()(非必需,仅用于美化样式)核心代码ButtonMenu.cppButtonMenu类为自定义弹窗类,重写eventFilter()方法,实现对外部控件的鼠标点击事件的过滤与处理。

2021-06-04 11:37:06 135302

原创 C++判断变量/对象/枚举类型的简单方式

关键点<typeinfo>使用typeid()操作符所需包含的头文件。typeid()获取变量类型信息的操作符,其返回值类型为std::typeinfo。我们可使用typeid(n) == typeid(int)的方式来判断变量n是否为类型int。注:可以使用typeid().name()获取变量类型名,但通常都不是我们所熟知的类型名称,而且比较奇怪的字符串,比如int类型,得到的name()为i。示例#include <typeinfo>#include

2020-10-15 11:25:45 151510

原创 C++小程序——中綴表達式轉換爲後綴表達式

轉換步驟初始化兩個棧:運算符棧s1和操作數棧s2;從左到右掃描中綴表達式;遇到操作數時,將其壓入棧s2;遇到運算符時,比較其與s1棧頂運算符的優先級:(1)若s1為空,或棧頂運算符為左括號(,則直接將此運算符入棧;(2)否則,若其優先級比棧頂運算符的高,將此運算符壓入s1;(3)否則,將s1棧頂的運算符彈出並壓入s2,再次跳轉到步驟(4.1)與s1中新的棧頂運算符進行比較;遇到括號時;(1)若為左括號(,則直接壓入s1;(2)若爲右括號),則依次彈出s1棧頂的運算符,

2020-10-10 11:08:37 150535

原创 Linux使用Shell脚本写日志

所用指令echo:用于字符串的输出>>:向文件中追加文本内容$date:获取系统日期时间源代码log.sh#!/bin/bash# 向`log.txt`文件中追加文本内容,包含日期时间# 这是一个死循环,每隔1秒执行一次写日志操作while [ true ]do # 可拼接两个字符串,一并写入日志文件,`$`、`()`、`%`、`+`不可省略,中间的`空格`及`-`、`:`是普通字符,用来使格式更美观,可省略 # `>>`表示追加内容,若想直接覆盖内

2020-09-30 14:30:37 158346 3

原创 Windows利用WinRar强制删除顽固文件

场景直接删除Windows文件(夹)时,系统弹窗提示无xx权限。解决方案确保系统已安装WinRar;鼠标右键点击待删除的文件,从右键菜单中选择添加到压缩文件;在弹出的WinRar界面的右侧,勾选压缩后删除原来的文件(D),点击确定;等待文件压缩完成,此时原来要删除的文件已不存在了,只剩下压缩后的rar文件;将rar文件也删除掉即可。...

2020-09-18 16:14:55 151308

原创 Qt 5.7之后的版本如何调试源码

Qt 5.7之后的版本如何调试源码下载Qt源码和调试信息安装Qt源码在安装Qt组件时,勾选source进行安装。安装完成后,还需要在Qt Creator中进行配置。依次点击菜单栏的工具——选项——调试器——概要——添加Qt源码,将安装的Qt路径下的Src目录加入进去即可,如C:\Qt\Qt5.12.6\5.12.6\Src。安装调试器需要自己下载Windows10 SDK进行安装,并在Qt Creator菜单栏里,依次选择工具——选项——Kits——Debuggers,添加Windows Ki

2020-09-18 15:48:44 151175 2

原创 C++模板类/函数,将头文件与源文件分离

C++泛型编程将包含模板的源文件与头文件分开关键在于模板显式实例化。解决方案模板函数分离源文件按一般方式编写.h和.cpp文件,但注意添加template <typename T>的声明;在.cpp文件末尾,添加模板显式实例化代码,如:// 显式实例化,注意,`template`之后没有`<>`,若添加则会报错!// 每种将被使用的类型,均需要进行显式实例化template void A::show(int &&);template voi

2020-09-18 11:46:11 158606 3

原创 屡试不爽的Qt中文乱码、编译报错的解决方案

屡试不爽的Qt中文乱码、编译报错的解决方案只需要3步,即可轻松解决Qt源码中包含中文所引发的编译报错、中文乱码等问题。打开Qt Creator,设置文件编码方式为UTF-8 目前存在BOM则保留(这一步骤似乎影响不大,可有可无);在包含中文字符的源码文件的开头(第一行),添加如下代码:#pragma execution_character_set("utf-8")将包含中文字符的源码文件,另存为UTF-8带BOM编码格式(个人推荐使用Sublime Text编辑器进行文件编码方

2020-09-09 09:36:55 159632 10

原创 Git拉取远程分支到本地,修改并同步

Git拉取远程分支到本地本地新建一个空白文件夹folder;进入folder目录,打开git bash,用命令行初始化git仓库;$ git init3. 与远程仓库建立连接;// `http://xxx...`该网址为远程仓库`Game`的ip地址,可在远程仓库`Game`中进行查看$ git remote add origin http://192.168.22.88:8000/102840/Game.git拉取远程分支到本地;// `cs`替换为远程分支名$ git f

2020-08-31 11:22:21 167537

原创 新手如何在Git Hub上学习开源项目+社交

新手如何在Git Hub上学习开源项目+社交背景Git Hub作为一个专业的开源网站,基于版本控制软件Git来实现各项功能,对于程序员来说是交流经验与学习开源项目的天堂。但由于国内外的学习方式、编程思维均存在较大差别,导致至今仍有很多国人对于Git Hub的使用感到不解。对于如何从Git Hub上寻找符合需求的开源项目并进行阅读学习,如何为他人的项目贡献自己的力量,以及如何与其他程序员进行交...

2019-12-17 16:07:16 164727 3

原创 如何有效地设置QPushButton的背景

如何有效地设置QPushButton的背景常见问题使用QPalette设置QPushButton的背景,发现未生效。Example// 获取按钮的画刷QPalette pal = ui->pushButton->palette();// 使用颜色对话框选取颜色QColor color = QColorDialog::getColor(color);if (!color....

2019-10-09 13:39:33 151954

原创 如何有效地设置QTextEdit的背景

如何有效地设置QTextEdit的背景易踩的坑问:为何按照方案来做,但背景样式却不生效?答:可能原因较多,这里列出几种。父类样式覆盖了本控件的样式。此时可设置本控件的背景为自动填充(不继承于父类):ui->textEdit->setAutoFillBackground(true);设置画刷样式时,ColorRole设置有误。通常网上搜索到的都是使用QPalette:...

2019-09-04 13:49:59 156545 2

原创 关于Qt中setStyleSheet()易踩的坑——样式覆盖

关于Qt中setStyleSheet()易踩的坑——样式覆盖问题描述在Qt中,很多时候我们都需要使用样式表来设置控件样式,如颜色、边框、字体等。然而,有时候设置的样式却没有生效,或者设置多个样式却只展现出一个。案例我自定义了一个继承于QLabel的类MyLabel,并希望创建其对象时,控件就默认显示绿色背景及红色文字。代码如下:MyLabel.h#ifndef MYLABEL_H...

2019-08-26 10:38:39 163537 2

原创 C++转义字符——解决恼人的协议头尾16进制问题

定义转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符。示例常见转义字符及对应ASCII码 \a 响铃(BEL) \b 退格(BS) \f 换页(FF) \n 换行(LF) \r 回车(CR) \t 水平制表符(HT) \v 垂直制表符(VT) \\...

2018-11-02 18:06:36 151450

原创 Linux下标准I/O缓冲机制

平台:Ubuntu操作系统编译器:g++首先让我们看一段代码:#include &lt;iostream&gt;#include &lt;unistd.h&gt;using namespace std;int main(){ for (int i = 0; i &lt; 3; ++i) { cout &lt;&lt; "hello " &lt;&lt; i; //...

2018-10-12 22:29:06 151057

原创 DateTime结构体与字符串相互转换的代码实现

问题描述 自定义一个DateTime结构体,代码如下://定义DateTime结构体struct DateTime{ short year; short month; short day; short hour; short minute; short second;};如何将DateTime对象转换成形如“YYYY-MM-DD hh:mm:ss”的字符串格式,...

2018-10-12 08:13:28 39404

原创 C++宏编程技巧

下面的代码并非按照规范格式来写,仅作示范用途。常用符号##连接符,可将多个标识符拼接起来,组成一个完整的标识符。//定义宏,用来打印整型变量#define PRINT(x) printf("%d\n", a##x)int a1 = 1;int a2 = 2;PRINT(1); //等同于printf("%d\n", a1),输出1PRINT(2); //等同于prin...

2018-10-05 10:36:01 48759 4

原创 C++创建Windows系统服务

定义    Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这种服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的...

2018-06-01 16:45:53 43536 2

原创 DirectSound录音的基本流程

DirectSound录音的基本流程1.枚举系统录音设备,调用DirectSoundCaptureEnumerate函数;2.创建设备对象,调用DirectSoundCaptureCreate8或DirectSoundFullDuplexCreate8函数可直接创建;3.获取录音设备的性能,调用IDirectSoundCapture8::GetCaps方法;4.创建录音缓冲区,调用

2017-01-03 16:47:34 39798

原创 DirectSound回放

DirectSound回放的基本流程1.创建DirectSound对象;2.设置设备的协作等级;3.创建缓冲区并设置播放格式;4.调用播放和控制函数实现声音的播放和控制。详细步骤:1.枚举系统输出声音设备,调用DirectSoundEnumerate函数;2.创建DirectSound对象,调用全局函数DirectSoundCreate8可以创建一个IDirectSou

2017-01-03 16:13:11 39281

原创 WAVE录音

波形音频的录制与播放相似,同样需要使用回调机制。WAVE录音的基本流程1.查询系统使用具备录制波形音频的输入设备,调用waveInGetNumDevs函数来获取设备数目;2.检查波形音频输出设备性能以确定设备是否支持所需录制的波形音频格式,调用waveInGetDevCaps函数;3.打开波形音频输入设备,调用waveInOpen函数;4.构造WAVE音频信息头结构WAVEHD

2017-01-02 15:00:03 39386

原创 WAVE播放

注意事项1.使用mmioRead函数读取WAV文件数据时,在文件指针到了尾部以后,或者读取的数据不够的时候,即使初始化了缓冲区,它也会随机填充数据。因此,pHdr->dwBufferLength不能大于真实的数据长度,否则播放最后一个数据块时会引起噪音。2.在waveOutOpen函数使用回调函数时,注意waveOutReset死锁的问题。3.在调用waveOutWrite函数播放音频

2017-01-02 14:36:27 39623

原创 VMware 12 Pro虚拟机安装Ubuntu 16操作系统,选择创建新的虚拟机操作后无反应

问题描述:我在WIN 10系统下先是安装VMware 12 Pro虚拟机,再在虚拟机上安装Ubuntu 16操作系统。在VMware软件主页界面,点击“创建新的虚拟机”,之后弹出安装步骤窗口,使用默认设置一路点击下去,最后点击“完成”结束操作。正常情况下,应该会在左侧出现“Ubuntu 64位”目录,并且开始Ubuntu系统的安装界面。但是我却发现点击“完成”按钮后,什么都没出

2016-08-18 18:35:37 39769

原创 递归

递归定义:一个函数直接或间接地调用自己。应用:汉诺塔、阶乘、累加汉诺塔规律:if (n > 1){    先把A柱子上的前n-1个盘子从A借助C移到B;    将A柱子上的第n个盘子直接移到C;    再将B柱子上的n-1个盘子借助A移到C;}程序示例:#include using namespace std;int tower

2016-06-08 15:31:56 38882

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除