
笔记
DiamondC++
1145141919810
展开
-
[C++] 简易有限状态机
switcher是切换状态用的,接受一个输入,返回加下来该转到哪个状态。func是该状态要执行的内容。原创 2024-07-27 19:56:11 · 313 阅读 · 0 评论 -
[Godot] 3D拾取
CollisionObject3D有个信号_input_event,可以用于处理3D拾取。Camera3D也有project_position用于将屏幕空间坐标投影到3D空间。原创 2024-03-30 10:22:16 · 1282 阅读 · 0 评论 -
[C++] 实现Union
前几天学了replacement new写的小玩意。原创 2024-03-17 12:07:06 · 519 阅读 · 0 评论 -
基于Godot的康威的生命游戏
创建了一个定时器,每隔0.1秒调用一次_on_timer_timeout(),所以更新代码也在这。在_ready()函数中创建了一个“滑翔机”,坐标系以左上角为原点。原创 2023-07-16 19:33:05 · 1692 阅读 · 0 评论 -
[C++] 带模板的模板特化
也许是因为模板函数不支持偏特化。因为类模板支持偏特化。原创 2023-05-02 08:33:00 · 206 阅读 · 1 评论 -
[C++] 信号
信号与槽是QT的一个概念,原版C++里并没有。原创 2023-03-11 15:47:48 · 904 阅读 · 1 评论 -
[C++] 简单序列化
序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。原创 2023-03-11 15:32:26 · 726 阅读 · 0 评论 -
[C++] 简单的侵入式反射实现
有点小问题,但是实现起来巨简单,只要C++17就行。原创 2023-03-11 15:12:12 · 485 阅读 · 0 评论 -
[C++] 类成员访问
调用非静态类成员需要指明是哪个对象调用的,所以需要传入类对象。原创 2023-02-25 15:31:27 · 409 阅读 · 0 评论 -
[C++] 简单的节点类
节点的实现原创 2022-11-12 19:37:16 · 1221 阅读 · 0 评论 -
[C++] 线段碰撞
额今天一时兴起,打算写个2D的布料模拟。思索了一番布料节点碰撞,发现可能会发生线段穿模。然后就写了这个。原理其实很简单求出线段的函数解析式struct LinearFunction{ float k; float b;};LinearFunction calcFunction(){ LinearFunction lf; lf.k = (vertex0.y - vertex1.y) / (vertex0.x - vertex1.x); lf.b = vertex0.y - v原创 2022-05-15 10:21:15 · 289 阅读 · 0 评论 -
[C++] windows.h实现文件读写
额话说C/C++的文件读写本来就是基于平台的API的吧代码#include <iostream>#include <windows.h>struct _File{ LPCSTR filename; HANDLE handle = nullptr;};typedef _File* File;File open(LPCSTR filename,bool read_mode);LPSTR read(File file);void write(File file原创 2022-05-13 19:47:29 · 708 阅读 · 0 评论 -
[C++] intptr_t
额看到windows的消息处理函数,使用的WPARAM和LPARAM竟然是整数,觉得十分惊讶(因为lParam可以转化为HWND和CREATESTRUCT)typedef UINT_PTR WPARAM;typedef LONG_PTR LPARAM;typedef LONG_PTR LRESULT;整数能储存地址吗?还真能intptr_t先来观摩一下在corecrt.h里的定义#ifndef _INTPTR_T_DEFINED#define _INTPTR_T_DEFINED#i原创 2022-05-13 09:26:20 · 785 阅读 · 0 评论 -
[C++] 图像处理
额打算用FreeType获取字体像素,然后贴在一张图上然后这个就是图像处理工具,只有复制和镜像,但足够了(旋转缩放难倒我了)使用完成后需要手动释放资源(干脆用智能指针它不香吗)代码#ifndef __IMAGE_PROCESSING_HPP__#define __IMAGE_PROCESSING_HPP__#include <string>typedef unsigned int uint;typedef unsigned char uchar;typedef std:原创 2022-05-12 10:36:51 · 1735 阅读 · 0 评论 -
[C++] [Windows] Windows程序上使用OpenGL
代码#include <iostream>#include <windows.h>#include <GL/gl.h>int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int){ //初始化窗口类 WNDCLASSEX wc; memset(&wc, 0, sizeof(WNDCLASSEX)); wc.cbSize = sizeof(WNDCLASSEX); wc.hbrBa原创 2022-05-05 14:24:19 · 1415 阅读 · 0 评论 -
[C++] [MinGW64] 安装glfw
参考如何在Windows 10(64位)的MinGW-w64上设置OpenGL创建窗口正文首先到这里下载CMake,配置好环境变量由于我只要GLFW就行了,其他的就跳过了(虽然我freeglut和glew都装了)在GLFW下载页上下载GLFW,打开命令提示符,用“cd”命令跳转到解压路径,输入cmake -G “MinGW Makefiles” -S. -B. -DCMAKE_INSTALL_PREFIX=E:\mingw64\x86_64-w64-mingw32由于我这边用的是MinG原创 2022-04-19 17:00:37 · 2131 阅读 · 0 评论 -
[C++] 写了一个简单的C++编译器
代码#include <iostream>#include <windows.h>#include <windowsx.h>#include <string>#include <fstream>#include <sstream>const int Button_Open_ID = 10001;const int Button_Save_ID = 10002;const int Button_Run_ID = 100原创 2022-04-18 20:56:48 · 2384 阅读 · 2 评论 -
[C++] 用命令提示符运行程序
代码run.bat@echo offrem 关闭输出rem 获取输入set /p input=echo %input%.exerem 编译程序E:cd C++\tryg++ %input%.cpp -o %input%.exerem 运行程序echo --------------------%input%.exerem 暂停pause运行结果如下图所示命令提示符指令rem:注释%input%:获取变量的值cd:改变当前目录help set1.显示、设原创 2022-04-18 14:52:20 · 1869 阅读 · 0 评论 -
[C++] [MinGW] MinGW下载与使用
下载在MinGW64官网找到“Downloads”,下滑找到“Sources”,打开SourceForge的超链接,就进入下载界面了。滑到最底下,如下图所示下载MinGW-W64-install.exe,打开根据需要选择配置,这个是64位的如果失败了,不要慌,回到开头,根据需要下载压缩包,然后解压就行配置环境变量右击“此电脑”(或者“我的电脑”),选择“属性”,打开“高级系统设置”,最后打开“环境变量”打开“Path”把路径填上就行打开“Windows PowerShell原创 2022-04-18 12:43:26 · 2368 阅读 · 0 评论 -
[jni] [android] 用C++开发安卓程序
原理原理其实很简单首先用FindClass()查找java类,然后用GetMethodID()得到构造函数构造函数的函数名是“< init >”,返回类型为"V"(void)最后直接用NewObject()创建一个按钮回调部分受到了别人文章和快写代码的启发,把回调类的地址传递到java中,java类接收到事件后用地址作为参数调用本地方法,本地方法把地址转换为c++回调类,调用方法代码MainActivity.javapackage com.Diamond.ndk; impor原创 2022-04-17 14:07:57 · 5536 阅读 · 0 评论 -
[Java] [View] 绘制曲线(其实是函数)
前言今天一时兴起,打算扔掉贝塞尔曲线,自己定义曲线,然后就做到函数上去了…代码package com.Diamond.canvas;import android.view.View;import android.content.Context;import android.renderscript.Float2;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Pai原创 2022-04-04 16:35:38 · 2489 阅读 · 0 评论 -
[C++] [windows.h] Windows程序模板
#include <windows.h>LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam);HWND initWindow(HINSTANCE hInstance, LRESULT CALLBACK (*wp)(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam));void onCreate(HWND hwnd);void原创 2022-04-04 09:07:36 · 930 阅读 · 0 评论 -
[C++] [windows.h] WindowsUtils
代码WindowsUtils.hpp#ifndef __WGUI_WINDOWSUTILS_HPP__#define __WGUI_WINDOWSUTILS_HPP__#include <windows.h>#include <iostream>#include <sstream>#include <map>namespace WUtils{ typedef LRESULT CALLBACK (*WNDPROC)(HWND hwnd, U原创 2022-04-03 20:19:37 · 1397 阅读 · 0 评论 -
windows.h 简单窗口类
代码Enums.hpp#ifndef _WENUMS_HPP_#define _WENUMS_HPP_namespace Windows{ enum WINDOW_STATE { WS_NO_ERROR, WS_WRF, WS_WCF };}#endifWindow.hpp#ifndef _WWINDOW_HPP_#define _WWINDOW_HPP_#include <windows.h>#include <string>#i原创 2021-12-31 19:49:01 · 624 阅读 · 1 评论 -
[C++] [FLTK] 很久以前写的FLTK计算器
简介好像是4月份写的,挺古老的了,控件交互还是在类里的好可以退格,也可以开方,当初写了好久,很多功能没弄出来,可惜FLTK不支持中文(c4droid的FLTK不支持中文)代码#include <FL/Fl.H>#include <FL/Fl_Window.H>#include <FL/Fl_Button.H>#include <FL/Fl_Output.H>#include <FL/fl_ask.H>#include <FL原创 2021-07-28 20:07:40 · 433 阅读 · 0 评论 -
[C++] 命名空间的其他用法
代码#include<iostream>using namespace std;namespace conio{ #include<conio.h> //没有不要慌,毕竟不是标准库里的 #define TJSJ 8848 //8848钛金手机};int main(){ cout << TJSJ; //ok clrscr(); //error conio::clrscr(); //ok return 0;}原创 2021-07-19 18:51:49 · 115 阅读 · 0 评论 -
[C++] 模仿Android开发的FLTK类
FLTKAPP.hpp#ifndef FLTKAPP_HPP_#define FLTKAPP_HPP_#include "FL.h" //上篇文章的那个#include <fstream>#include <string>#include <map>#include <vector>#include <sstream>#include <regex>enum WIDGET_ITEM_TYPE{ FL_NO_WI原创 2021-07-13 18:48:39 · 269 阅读 · 2 评论 -
[C++] 导入FLTK几乎所有头文件
写入使用头文件dirent.h中的文件名读取功能和文件写入功能实现DIR * dir = opendir(路径);Dirent * ent = NULL;for(ent = readdir(dir);ent != NULL;ent = readdir(dir)){ //写入 cout << ent->name << endl;}closedir(dir);FL.h#ifndef FL_H_#define FL_H_#include "F原创 2021-07-13 17:13:59 · 586 阅读 · 0 评论 -
FLTK 重写Fl_Button回调
众所周知,FLTK的回调只能有一个,其他的需要重写handle(),所以我打算直接重写handle(),制作多个回调#include <FL/Fl.H>#include <FL/Fl_Window.H>#include <FL/Fl_Button.H>void no_cb(Fl_Widget*,void*){}class Button : public Fl_Button{ private: void (*onPush)(Fl_Widget*,void*)原创 2021-05-23 09:19:57 · 367 阅读 · 0 评论 -
C++输入一个数组
template < typename T >void input(T & v, string text = ""){ cout << text; cin >> v;}template < typename T >void input(T * v_beg, T * v_end, string * t_beg = nullptr, string * t_end = nullptr){ if(t_beg != nullptr&&原创 2021-04-03 16:36:42 · 9854 阅读 · 0 评论 -
C++浮点数读取和删除小数位
最近打算用FLTK做一个计算器程序,然后惊奇的发现,浮点数的读入有些麻烦,于是打算做个小程序试验一下。读取#include<iostream>#include<cctype>#include<cmath>using namespace std;int main(){ double n = 0;//要输出的数 char ch;//输入的字符 int p = 0;//小数位数 while ((ch = getchar()) != int ('\n'))原创 2021-03-28 10:45:09 · 2546 阅读 · 0 评论 -
“粉末游戏“碰撞检测
以前,我想要做一个"粉末游戏",就是一堆粉末,但是,我发现,比如说你有100个粉末,那么你要进行数千次检测,这对于CPU来说是一个极大的负担,所以我提出了一种新的碰撞检测(虽然我感觉已经有人比我先提出了…),姑且就叫他映射表碰撞检测吧...原创 2021-03-09 19:58:55 · 498 阅读 · 0 评论 -
C++用getchar()实现输入
char* get_input(){ //用于储存输入的数据 vector<int> get; //输入循环,遇到'\n'结束输入 for(int ch = getchar();ch != int('\n');ch = getchar()) get.push_back(ch); //创建动态char数组 char * str = new char[get.size() + 1]; //把vector<int>转换为char数组 for(int i = 0;i &l原创 2021-03-06 13:30:35 · 1112 阅读 · 0 评论 -
C++从字符串里查找字符串
#include<iostream>#include<string>using namespace std;int find(char[], char[]);int main(){ char a[] = "0abcd1abcd2"; char b[] = "abcd"; cout << find(a,b); return 0;}int find(char data[], char text[]){ // 获取长度 int datal = st原创 2021-02-21 09:49:20 · 3008 阅读 · 3 评论 -
C++sqrt()
double sqrt(int x){ //公式:a+b/(2a+b/(2a+b/(2a+b/...))) //找出a int a; for(a = 0;a * a <= x;a++); a--; //得到b int b = x - a * a; //如果b=0,说明a*a=x即x的平方根是a if(b == 0) { return a; } //代入公式,其实可以无线拓展,但是我觉得精度够了 double m1 = 2 * a + b / (2 * a);//新的,相原创 2021-02-17 11:14:37 · 450 阅读 · 0 评论 -
C++root()
root()函数说白了就是改了下sqrt()原创 2021-02-11 10:52:12 · 2137 阅读 · 0 评论 -
c++sqrt()开方函数
#include<iostream>using namespace std;double sqrt(int n);double pow(int a,int b);int main(){ cout << sqrt(3); return 0;}double sqrt(int n){ int l = 4;//精度 double i = 0; for (int m = 0; m < l; m++) { for (; i * i &原创 2021-01-30 08:03:50 · 8683 阅读 · 0 评论 -
判断字符串相等
#include<iostream>using namespace std;int main(){ char str1[] = "i am a string"; char str2[] = "i am a string"; //获取字符串长度(一开始竟然没想到strlen()(捂脸)) int str1l = sizeof(str1) / sizeof(char); int str2l = sizeof(str2) / sizeof(char); //e(qual) boo原创 2021-01-25 14:29:11 · 265 阅读 · 0 评论 -
printf()的\e
看了一下别人的代码,发现了printf()的一个神奇功能:\e格式:printf("\e[%dm%s",样式参数,字符串);或printf("\e[%d;%dm%s",样式参数1,样式参数2,字符串);样式列表:完整列表代码:for(int i = 0;i < 128;i++){ printf("%d:\e[%dmout\n",i,i);}...原创 2021-01-01 13:01:09 · 932 阅读 · 0 评论