五子棋游戏——HGE

原生js实现拖拽与缩放等包含js设置样式与五子棋等 最近写五子棋,写着写着,写了几个js特效,感觉还行,发出来分享一下。具体还在调试,如果有alert弹窗部分,大家自己找一下取消掉。我记得缩放的四个边角红色背景色没有去掉,嫌碍事的可以把“background:red;”改为“background:transparent;”即可。有小瑕疵的话,有动手能力的可以自行调试改正。A. 拖拽部分 ——– 《changer.js》:var chger_Brows 阅读详情

曾经用 HGE 做的一个五子棋游戏-。-今天偶然翻了出来, 给大家分享一下

//main.cpp
#include <hge.h>
#include <hgeSprite.h>
#include "menu.h"

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
	init();
	doit();
	delit();

	return 0;
}

//menu.h
HEFFECT papa, music;//下棋声音
HTEXTURE bg0, bg1, bg2, bg3, bg4;//背景更换
HTEXTURE bgbg, white, black, whitewin, blackwin;
HGE *hge = 0;
hgeSprite *s_bgbg, *s_bg, *s_white, *s_black, *s_whitewin, *s_blackwin;

bool mouse_lbtn = 0;//记录鼠标左键点击
bool isWhiteBlack = 0;//判断当前下子方
float wfx[205], wfy[205];//白子坐标
float bfx[205], bfy[205];//黑子坐标
int cntw = 0, cntb = 0;//白子数与黑子数
int qi[20][20];//棋盘
int over = 0;//是否结束
int bgrand;//背景随机数
int dir[8][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}, {1, 1}, {-1, -1}, {1, -1}, {-1, 1}};

void boom()//点击声音
{
	hge->Effect_Play(papa);
}

int walk(int x, int y, int dx, int dy)
{
	int s = 0;
	int xx = x;
	int yy = y;
	while (1)
	{
		xx += dx;
		yy += dy;
		if (xx < 0 || yy < 0 || xx > 18 || yy > 18 || qi[xx][yy] != qi[x][y]) return s;
		s++;
	}
}

void judge(int x, int y)//判断是否五星连珠
{
	for (int i = 0; i < 8; i += 2)
	{
		if (walk(x, y, dir[i][0], dir[i][1]) + (walk(x, y, dir[i + 1][0], dir[i + 1][1])) >= 4)
		{
			over = qi[x][y];
			return;
		}
	}
}

void leftButtonLastState()
{
	bool mouse_lbtn0 = hge->Input_GetKeyState(HGEK_LBUTTON);
	if (mouse_lbtn == 1 && mouse_lbtn0 == 0)
	{
		if (over)
		{
			bgrand = rand() % 5;
			switch (bgrand)
			{
				case 0: s_bg = new hgeSprite(bg0, 0, 0, 1024, 768);break;
				case 1: s_bg = new hgeSprite(bg1, 0, 0, 1024, 768);break;
				case 2: s_bg = new hgeSprite(bg2, 0, 0, 1024, 768);break;
				case 3: s_bg = new hgeSprite(bg3, 0, 0, 1024, 768);break;
				case 4: s_bg = new hgeSprite(bg4, 0, 0, 1024, 768);break;
			}
			memset(qi, 0, sizeof(qi));
			cntw = 0;
			cntb = 0;
			over = 0;
			isWhiteBlack = false;
			mouse_lbtn = 0;
			return;
		}
		float x1, y1;
		hge->Input_GetMousePos(&x1, &y1);
		if (x1 < 100 && y1 < 100)
		{
			if (isWhiteBlack == false)
			{
				if (cntb == 0) return;
				cntb--;
				int xx = (bfx[cntb] + 10 - 450) / 30;
				int yy = (bfy[cntb] + 10 - 114) / 30;
				qi[xx][yy] = 0;
				isWhiteBlack = true;
			}
			else
			{
				if (cntw == 0) return;
				cntw--;
				int xx = (wfx[cntw] + 10 - 450) / 30;
				int yy = (wfy[cntw] + 10 - 114) / 30;
				qi[xx][yy] = 0;
				isWhiteBlack = false;
			}
		}
		if (isWhiteBlack == false)
		{
			if (x1 > 445 && x1 < 995 && y1 > 109 && y1 < 659)
			{
				x1 = (int)(x1 - 435) / 30 * 30 + 450;
				y1 = (int)(y1 - 99) / 30 * 30 + 114;
				int xx = (x1 - 450) / 30;
				int yy = (y1 - 114) / 30;
				if (qi[xx][yy] == 0)
				{
					wfx[cntw] = x1 - 10;
					wfy[cntw] = y1 - 10;
					qi[xx][yy] = 1;
					cntw++;
					isWhiteBlack = true;
					boom();
					judge(xx, yy);
				}
			}
		}
		else
		{
			if (x1 > 445 && x1 < 995 && y1 > 109 && y1 < 659)
			{
				x1 = (int)(x1 - 435) / 30 * 30 + 450;
				y1 = (int)(y1 - 99) / 30 * 30 + 114;
				int xx = (x1 - 450) / 30;
				int yy = (y1 - 114) / 30;
				if (qi[xx][yy] == 0)
				{
					bfx[cntb] = x1 - 10;
					bfy[cntb] = y1 - 10;
					qi[xx][yy] = 2;
					cntb++;
					isWhiteBlack = false;
					boom();
					judge(xx, yy);
				}
			}
		}
		mouse_lbtn = 0;
	}
}

bool RenderFunc()
{
	hge->Gfx_BeginScene();
	s_bg->Render(0, 0);
	//s_bgbg->Render(416, 80);
	for (int i = 0; i < 19; i++)
	{
		hge->Gfx_RenderLine(450.0, 114.0 + i * 30, 990.0, 114.0 + i * 30, 0xff000000, 0.5);
	}
	for (int i = 0; i < 19; i++)
	{
		hge->Gfx_RenderLine(450.0 + i * 30, 114.0, 450.0 + i * 30, 654.0, 0xff000000, 0.5);
	}
	for (int i = 0; i < cntw; i++)
	{
		s_white->Render(wfx[i], wfy[i]);
	}
	for (int i = 0; i < cntb; i++)
	{
		s_black->Render(bfx[i], bfy[i]);
	}
	if (over == 1)
		s_whitewin->Render(200, 200);
	if (over == 2)
		s_blackwin->Render(200, 200);
	hge->Gfx_EndScene();
	return false;
}

bool FrameFunc()
{
	if (hge->Input_GetKeyState(HGEK_LBUTTON)) mouse_lbtn = 1;
	if (mouse_lbtn == 1) leftButtonLastState();
	if (hge->Input_GetKeyState(HGEK_ESCAPE)) return true;
	if (hge->Input_GetKeyState(HGEK_A)) hge->Effect_Play(music);
	return false;
}

void init()
{
	hge=hgeCreate(HGE_VERSION);
	hge->System_SetState(HGE_SHOWSPLASH, false);
	hge->System_SetState(HGE_SCREENWIDTH, 1024);
	hge->System_SetState(HGE_SCREENHEIGHT, 768);
	hge->System_SetState(HGE_SCREENBPP, 32);
	hge->System_SetState(HGE_LOGFILE, "Gobang.log");

	hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);
	hge->System_SetState(HGE_RENDERFUNC, RenderFunc);
	hge->System_SetState(HGE_TITLE, "Gobang");
	hge->System_SetState(HGE_WINDOWED, true);
	hge->System_SetState(HGE_USESOUND, true);
	hge->System_SetState(HGE_HIDEMOUSE, false);
}

void doit()
{
	if(hge->System_Initiate())
	{
		memset(qi, 0, sizeof(qi));
		// Load sounds and textures
		papa = hge->Effect_Load("menu.wav");
		music = hge->Effect_Load("music.mp3");
		bgbg = hge->Texture_Load("bgbg.png");
		bg0 = hge->Texture_Load("bg0.jpg");
		bg1 = hge->Texture_Load("bg1.jpg");
		bg2 = hge->Texture_Load("bg2.jpg");
		bg3 = hge->Texture_Load("bg3.jpg");
		bg4 = hge->Texture_Load("bg4.jpg");
		white = hge->Texture_Load("white.png");
		black = hge->Texture_Load("black.png");
		whitewin = hge->Texture_Load("whitewin.png");
		blackwin = hge->Texture_Load("blackwin.png");
		if (papa && bgbg && bg0 && bg1 && bg2 && bg3 && bg4 && white && black && whitewin && blackwin)
		{
			bgrand = rand() % 5;
			switch (bgrand)
			{
				case 0: s_bg = new hgeSprite(bg0, 0, 0, 1024, 768);
				case 1: s_bg = new hgeSprite(bg1, 0, 0, 1024, 768);
				case 2: s_bg = new hgeSprite(bg2, 0, 0, 1024, 768);
				case 3: s_bg = new hgeSprite(bg3, 0, 0, 1024, 768);
				case 4: s_bg = new hgeSprite(bg4, 0, 0, 1024, 768);
			}
			s_bgbg = new hgeSprite(bgbg, 0, 0, 608, 608);
			s_white = new hgeSprite(white, 0, 0, 24, 24);
			s_black = new hgeSprite(black, 0, 0, 24, 24);
			s_whitewin = new hgeSprite(whitewin, 0, 0, 250, 200);
			s_blackwin = new hgeSprite(blackwin, 0, 0, 250, 200);
			hge->System_Start();
		}
		else
		{
			MessageBoxA(NULL, "Can't load some sound(s) or texture(s)", "Error", MB_OK | MB_ICONERROR | MB_APPLMODAL);
		}
	}
}

void delit()
{
	hge->Texture_Free(bg0);
	hge->Texture_Free(bg1);
	hge->Texture_Free(bg2);
	hge->Texture_Free(bg3);
	hge->Texture_Free(bg4);
	hge->Texture_Free(bgbg);
	hge->Texture_Free(black);
	hge->Texture_Free(white);
	hge->Texture_Free(blackwin);
	hge->Texture_Free(whitewin);
	hge->Effect_Free(papa);
	delete s_bg;
	delete s_bgbg;
	delete s_black;
	delete s_white;
	delete s_blackwin;
	delete s_whitewin;
	hge->System_Shutdown();
	hge->Release();
}

当初代码写的比较烂,拿出来丢丢脸。可怜
自己做的一个后台管理员登陆界面 .cshtml 管理员登录 L O G I N F O R M 阅读详情

相关推荐

2D游戏引擎HGE动画编辑器V1.00 C++源码共享

I've create an animation editor, but I don't know how to upload it to share with you all. If anybody have the space to share this software, give the e-mail address and I will send it to you, the source code included too. Main function: 1. Support png file only; 2. Adjust the png file export from Civ3 flc. You can download the resource from:[ http://forums.civfanatics.com/downloads.php?do=cat&id=71&sort=date&page=8 ] 3. You can modify animation rect,hotspot,color,mode, and attach the sound file. Then you can export a resource file include above information and the png file and sound file will copy the folder your specified. That's all. I am improving it for my project now. BTW, thank all the generous people in this forum especially the author of HGE. Thank you.

hge的bug

下面写一些我在使用hge时遇到的bug (1)

路人 857

易语言HGE模块2.0自由动画版

优化了动画, 如果不明白封装_自由动画用法,推荐使用原版 动画管理类 (原始仅仅按帧播放资源包中的动画) 增加了文字处理。 配套了新式地图编辑器,资源包,解决了大地图无法加载问题。

[HGE]-源码分析-5 core里的graphics(b)

接着上次说 下一个函数 全转换函数(自己起的名。。。) void CALL HGE_Impl::Gfx_SetTransform(float x, float y, float dx, float dy, float rot, float hscale, float vscale) { D3DXMATRIX tmp; if(vscale==0.0f) D3DXMatrixIde

ASL 1629

超声波清洗机拆解实录:从电路板到换能器,一文看懂内部构造(附高清图)

本文详细拆解了超声波清洗机的内部构造,从电路板设计到换能器工作原理,揭示了其核心技术。通过高清图片和详细分析,展示了功率放大电路、高频变压器及压电换能器等关键部件,为电子爱好者和维修技术人员提供了实用的故障诊断和元件二次利用指南。

grape的博客 1189

Unity中URP实现水体效果(泡沫)

在上篇文章中,我们实现了水体的深度。在这篇文章中,我们来使用上篇文章采样后的深度图来实现水中的泡沫效果。

楠溪泽岸的博客 3491

HGE引擎中实现自定义画圆的方法

#define PI 3.1415926535898 void Gfx_RenderCircle( float x, //圆心x坐标 float y, //圆心y坐标 float w, //圆半径宽 float h, //圆半径高( 当w和h不相等时为椭圆 ) DWORD color = 0xFFFFFFFF, //颜色 flo

F_r_e_e_x的专栏 1519

企业IT运维实录:批量部署银河麒麟V10-SP1,Ghost镜像与UKey激活实战

本文详细介绍了企业级银河麒麟V10-SP1操作系统的批量部署全流程,包括标准化镜像制作、自动化封装技术、网络化部署方案及UKey集群激活方案。通过实战案例和技术要点解析,帮助企业IT运维团队大幅提升部署效率,确保系统安全与稳定性。

weixin_30729609的博客 388

C语言winmain函数的参数,WinMain()函数详解

WinMain()函数DOS下的C语言从main()开始,Windows下的C语言从WinMain()开始,一个空的WinMain()函数是这样的:int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){return(0);}一个函数即使什么也没做,也应该返回一个...

weixin_27268733的博客 2900

【学习记录】IIC驱动ICM42670+卡尔曼滤波+四元数姿态角解算

ICM42670陀螺仪可以使用iic驱动,单片机平台使用GD32f305VE。

liarsup的博客 8271

OSPF规划两大模型:双塔奇兵、犬牙交错

大家好,今天给大家带来的是OSPF规划两大模型:双塔奇兵、犬牙交错,让我们直接开始吧! OSPF规划之双塔奇兵 说明: OSPF 如果某个区域存在两个 ABR,并且在两个 ABR 上都对 area n 内的路由做了聚合操作。 最佳配置: 两台ABR之间的红线应该使用以太网的子接口技术,一个子接口属于area0,另一个属于 area n;或者该链路规划为 area n,同时配置虚连接; ABR 的 loopback0 规划入 area 0 OSPF 规划之犬牙交错 说明: 有时接入层的设备会以乱序的

网络技术联盟站 2424

HGE引擎---hgeAnimation动画精灵

通过hgeAnimation动画精灵类可以实现精灵动画,此处重点说一下构造函数的参数  hgeAnimation(  HTEXTURE tex,  int nframes,  float FPS,  float x,  float y,  float w,  float h);其中:tex:存放动画的texture,可以通过hge->Texture_Load()加载;注意此处加载的是一个张图片,里

rabbit729的专栏 7292

MC_SetOverride指令详细应用介绍(基恩士PLC)

基恩士KV系列PLC和松下总线绝对值伺服运动控制(详细配置+轴控完整ST源代码)

RXXW_Dor的博客 336

HGE中的Texture操作

HGE是一款很不错的2D游戏引擎,对于游戏引擎的入门是很不错的选择。 前段时间把HGE重新封装了下,好符合自己的使用习惯。在封装的过程中,遇到一些对Texture的操作,卡了很久,在此记录遇到的问题,以备查阅,希望也能给你带来帮助, Texture函数列表 Texture_Create:创建一个空纹理,可以指定高度宽度,但是创建后的纹理大小可能比指定的宽度高度大,原因暂时还不

胡老哈的学习记录 2457

YOLOv11改进 | 特殊场景改进篇 | 2024最新改进CPA-Enhancer链式思考网络(适用低照度、图像去雾、雨天、雪天)

本文给大家带来的改进机制是2024.3月份最新改进,由CPA-Enhancer: Chain-of-Thought Prompted Adaptive Enhancer for Object Detection under Unknown Degradations论文提出的CPA-Enhancer链式思考网络CPA-Enhancer通过引入链式思考提示机制,实现了对未知退化条件下图像的自适应增强。该方法的核心在于能够利用CoT提示对图像退化进行动态分析和适应,从而显著提升物体检测性能。

Snu77的博客 2014

AutoSAR MemMap模块详解及使用注意事项

在本文中,我们将深入探讨MemMap模块的实例解析,并介绍在使用该模块时需要注意的一些事项。在上述代码中,我们使用了MEMMAP_START_SEC_VAR_32BIT和MEMMAP_START_SEC_CODE来定义MemMap区域的起始位置,使用MEMMAP_STOP_SEC_VAR_32BIT和MEMMAP_STOP_SEC_CODE来定义MemMap区域的结束位置。1.合理划分MemMap区域:根据实际需求,合理划分MemMap区域,将不同类型的变量放置在不同的区域中,以便于管理和访问。

weixin_50547796的博客 2534

又一个MIDI小游戏 用HGE引擎开发

本游戏是学习作品,应用HGE引擎,和自己解析的MIDI文件引擎。运行需要DX的支持。 先来张效果图: 演示下载地址: http://files.cnblogs.com/shanyuan/CarMidi.rar 转载于:https://www.cnblogs.com/shanyuan/archive/2010/09/28/1837552.html...

banjiqian7595的博客 184

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

[HGE]-源码分析-4 core里的demo和graphics(a)

继续接着上次的,Core中的文件一个一个来。 顺便提一下demo,就是第一个cpp文件,上次说了这个是开场画面,想了下还是上代码一点一点说吧,随便提点怕说不清 ok,demo.cpp 他完成的事情是:把一进去那个logo画出来,停留一小会,然后滚蛋 /* ** Haaf's Game Engine 1.8 ** Copyright (C) 2003-2007, Relish Games

ASL 2779

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

来预览一下我业余时间正在写的一个游戏(HGE+DX9+3DS+CN及输入+网络)[+MFC]

支持(HGE+DX9+3DS+CN及输入+网络)[+MFC]这些要看自己需不需要前提条件:    在不影响改过的HGE与原始HGE版本没有多的改动情况下进行的.我来解释一下此版本:    vista系统下的d3d9.dll和XP及2000下的d3d9.dll是不兼容的.也不向上向下兼容.    3DS的需求,比如你想用3D人物做2D游戏,这个时间就需要了。    CN中文输入呢我已经有了构想,

showlong 专栏「C++」@ http://www.fuel4d.com 6398

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

WinMain函数参数介绍

WinMain函数的定义 WinMain函数的原型声明如下:int WINAPI WinMain( HINSTANCE hInstance,    // 当前窗口实例             HINSTANCE hPrevInstance,    // 前一个窗口实例             LPSTR  lpCmdLine,    // 命令行参数             int  nCmd

jahmin的专栏 688

hge引擎写的一个扫雷小游戏

/**前些天,没事玩扫雷,发现无雷区域展开很像优先搜索,索性google了一下,果然不出所料,*用到得算法就是BFS,正好这阵子看了一点hge游戏引擎设计,就写了一个hge下的扫雷小*游戏*/好了开始说思路了1.首要写一个棋盘(20*20个正方形),由二维结构体数组便可实现struct node1{ int x,y; //x,y 是真实的物理坐标 int...

weixin_30412577的博客 248

2D小游戏——泡泡球游戏

【前言】     不知道大家还记不记得我,我又来了……我在一家端游公司工作半年了,这个东西呢是帮一个做美术的同学做的一个毕业设计。 【软件需求】这个游戏就是用2D引擎hge制作的2D泡泡球小游戏,游戏素材是同学毕设制作的。需求是同学给的,满满的一个excel啊。 【游戏界面】           【编写感受】     从游戏图形技术方面讲比较简单,但是游戏逻辑方面却设计得十分复

The Way To My Dream 1355

AES 加密位: 128位,加密模式:CBC, 填充模式:Zeros

AES 加密位: 128位,加密模式:CBC, 填充模式:Zeros

ColorWaterer的专栏 6301
上一篇: 博客搬家啦
下一篇: asp.net NHibernate Spring.net 框架搭建(开源)
ColorWaterer
博客等级 码龄12年 16粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值