头⽂件
#include<graphics.h>// 引⽤图形库头⽂件
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>//InputBox,MessageBox
#include<time.h>//随机种⼦
#include<mmsystem.h>//bgm
#include<windows.h>//bgm
#include"maze.h"//迷宫
#pragma comment(lib,"winmm.lib")//bgm
⼆,关于EasyX如何实现展⽰图⽚与⿏标操作
展⽰图⽚原理分享:展⽰图⽚EasyX做的很简单,⾸先,先⽤ IMAGE 定义⼀个图⽚的变量,然后给变量赋值。
运⽤函数:IMAGE,initgraph,loadimage,putimage
U1S1这⼏个函数开始后陌⽣,后⾯⽤着就熟悉了
图片下载站源码代码:
#include<graphics.h>
#include<conio.h>//头⽂件
IMAGE start//定义变量
int main()
{
initgraph(1366,700);//定义窗⼝⼤⼩长,宽
loadimage(&start, L"picture\\start.jpg");//赋值操作,把路径的图⽚赋值给start(之前定义的变量)
putimage(0,0,&start);//从x=0,y=0,开始展⽰start赋值的图⽚,即picture\\start.jpg
}
⿏标操作原理:先定义1块长宽确定的窗⼝,再通过x,y坐标确定⿏标位置。
运⽤函数:MOUSEMSG,FlushMouseMsgBuffer,MouseHit ,msg.uMsg,WM_LBUTTONDOWN,注意看EasyX官⽹⽂档介绍
/*下⾯进⾏⿏标交互*/
MOUSEMSG msg;//定义变量,保存⿏标消息
FlushMouseMsgBuffer();// 清空⿏标消息缓冲区,避免⽆效⿏标信息带⼊到正式判断中
while(true)// 主循环,循环监听⿏标信息
{
while(MouseHit())//监听⿏标信息;当有⿏标消息的时候执⾏,可检测连续的⿏标信息
{
msg =GetMouseMsg();//获取⿏标消息
if(WM_LBUTTONDOWN == msg.uMsg)//判断⿏标信息;⿏标左键按下
{
if(msg.x >460&& msg.x <820&& msg.y >600&& msg.y <635)//⿏标点击特定区域,即按钮所在区域
{
Background_1();//调⽤介绍背景函数
}
}
}
}
}
三,EasyX如何做⼀个句柄窗⼝,即交互窗⼝
运⽤函数:InputBox,MessageBox,
注意:要⽤wchar_t 定义字符串,具体介绍看下官⽹的函数⽂档
InputBox:交互窗⼝,⽤户可以输⼊信息。
MessageBox:信息提醒窗⼝,展⽰信息。
代码:
wchar_t s1[50];
InputBox(s1,20,_T("请输⼊猜测的数字"),_T("Guess"),0,0, false);
MessageBox(NULL,_T("恭喜您猜测正确,⾦币数加500"),_T("Guess"), MB_OKCANCEL | MB_SETFOREGROUND);四,EasyX播放⾳乐(BGM),循环播放
运⽤函数:mciSendString
注意:
_T(“open+空格+路径+alias+变量名(可变)”),0,0,0
TEXT(“play+空格+变量名+repeat”),0,0,0
如果不加repeat,那么只播放⼀遍,加上repeat,会循环播放,
路径是不允许存在空格的
头⽂件为:
#include<mmsystem.h> //bgm
#include<windows.h> //bgm
#pragma comment(lib,“winmm.lib”) //bgm
代码:
mciSendString(_T("open notangry.mp3 alias music"),0,0,0);
mciSendString(TEXT("play music repeat"),0,0,0);
五,C语⾔运⽤EasyX做⼀个拼图游戏
注意:需要⽤的图⽚在我的CSDN源码⾥⾯
3X3拼图,是有⼀半⼏率不能拼出来的,涉及⾼数知识,不细讲,
但是有算法可以解决,我的代码是运⽤了这个算法的,不难,很简单
代码:
#include<graphics.h>// 引⽤图形库头⽂件
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>//InputBox,MessageBox
#include<time.h>//随机种⼦
#include<mmsystem.h>//bgm
#include<windows.h>//bgm
#include"maze.h"//迷宫
#pragma comment(lib,"winmm.lib")//bgm
/*全局变量*/
# define IMA_HEIGHT 699 //拼图图⽚的长
# define IMA_WIDTH 699//拼图图⽚的宽
# define SIZE 233 //拼图图⽚⼤⼩
# define ROW (IMA_HEIGHT/SIZE)
# define COL (IMA_WIDTH/SIZE)
int y =0;//拼图判断
IMAGE image;
IMAGE image1;
IMAGE img[ROW * COL];
void JigsawGame()
{
srand((unsigned)time(NULL));
GameInit();//分割图⽚
MixImg();//打乱图⽚
while(1)
{
DrawMap();
GamePlay();
GameDone();
if(y ==1)
{
break;
}
}
}
void GameInit()
{
loadimage(&image, L"picture\\pintu.jpg", IMA_HEIGHT, IMA_WIDTH);
loadimage(&image1, L"picture\\pintu2.jpg", IMA_HEIGHT, IMA_WIDTH);
putimage(699,0,&image1);
SetWorkingImage(&image);//这个函数⽤于设定当前的绘图设备。设定image为绘图窗⼝
int n =0;
for(int i =0; i < ROW; i++)
{
for(int j =0; j < COL; j++)
{
getimage(&img[n++], j * SIZE, i * SIZE, SIZE, SIZE);//得到分割的区域;
}
}
SetWorkingImage(NULL);//把窗⼝设置为当前的绘图⼯作区,为默认绘图窗⼝,即默认,相当于重开//将最后⼀块图⽚换成空格图⽚
loadimage(&img[ROW * COL -1], L"blank.jpg", SIZE, SIZE);//空⽩
n =0;
for(int i =0; i < ROW; i++)
{
for(int j =0; j < COL; j++)
{
arr[i][j]= n;
n++;
}
}
}
void DrawMap()
{
for(int i =0; i < ROW; i++)
{
for(int j =0; j < COL; j++)
{
putimage(j * SIZE, i * SIZE,&img[arr[i][j]]);
}
}
}
void GamePlay()
{
int Blank_i, Blank_j;//空⽩图⽚的列,⾏坐标;
int Mouse_i, Mouse_j;//⿏标的列,⾏坐标;
for(int i =0; i < ROW; i++)
{
for(int j =0; j < COL; j++)
{
if(arr[i][j]== ROW * COL -1)
{
Blank_i = i;
Blank_j = j;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论