连连看的程序c语言,连连看游戏源程序
最近在唯C论坛上看到一个连连看游戏,这也正是我想做的一个游戏,不过一直没有付之实践,呵呵,没想到有人捷足先登了哈。下下来一看,恩,不错,不过就是缺点音乐,要是加是音乐和音效那就更完美了。作者功底可不小哦:)。部分源文件如下(由于源文件太长,不是很方便发上来,就发了一个原作品里的头文件),点上面的连接下载整个源程序和编译好的作品,很好玩的啦!推荐大家下下来研究!!!)
#define MAX_X 16
#define MAX_Y 9
#define MAX_CHAR 36
#define MAX_GUAN 6
/* 0-9: number
10-35: lowercase
36-61: capital letter
62-76: other char
>76: don’t use it, fill with FILL.CHAR
*/
/* easy: x=12, y=7, char=21
normal: x=14, y=8, char=xx
hard: x=16, y=9, char=36
*/
#define SUPPER_FAST 1
#define SELECTED_COLOR 2 /* green */
#define CUR_COLOR 4 /* red */
#define NORMAL_COLOR 7
#define LINK_CHAR ‘.’
#define FILL_CHAR 176
#define DISP_X 2
#define DISP_Y 2
#define SCREEN_X 80
#define SCREEN_Y 25
#define MAX_BANK 20
#define CHOOSE_NOW 1
#define CHOOSE_OUTSIDE 1
#define CHOOSE_INSIDE 2
#define CHOOSE_UP 3
#define CHOOSE_ALL 4
/* detail of link type define see file lian.doc */
#define LINK_NONE 0
#define LINK_0P1 1
#define LINK_0P2 2
#define LINK_1P31 3
#define LINK_1P32 4
#define LINK_1P41 5
#define LINK_1P42 6
#define LINK_21P11 7
#define LINK_21P12 8
#define LINK_21P21 9
#define LINK_21P22 10
#define LINK_21P41 11
#define LINK_21P42 12
#define LINK_22P31 13
#define LINK_22P32 14
#define LINK_22P41 15
#define LINK_22P42 16
#define FINISH_DONE 1
#define FINISH_DIE 2
#define FINISH_ESC 3
#define MATRIX_FILE “Matrix.txt”
#define SPACE 0×20
#define ENTER 0x0d
#define ESC 0x1b
#define ARROW_UP 72
#define ARROW_DOWN 80
#define ARROW_LEFT 75
#define ARROW_RIGHT 77
#define F1 59
#define F2 60
#define F3 61
#define F4 62
#define F5 63
#define F6 64
#define F7 65
#define F8 66
#define F9 67
#define F10 68
/* ——————— */
#define SAME_PERCENT 0.8
#define BMP_FILE “Lian_all.bmp”
/* this file must be 16 colors (4 bits) */
#define DRAW_START_X 50
#define DRAW_START_Y 20
#define DRAW_MSG_Y 430
#define EMPTY_CHAR 0xff
/* =============================== */
/* Define of LianLianKan */
/* =============================== */
#define MAX_UNIT_X MAX_X
#define MAX_UNIT_Y MAX_Y
/* Easy: 12*7, Normal: 14*8, Hard: 16*9 */
#define UNIT_WIDE_ALL 40
#define UNIT_HIGH_ALL 50
#define WIDE_FROM 3
#define HIGH_FROM 3
#define UNIT_WIDE 32
#define UNIT_HIGH 42
/* 方块 = 40×50,包括边框1(左上角)
空白的黑色部分(左上角) = 宽度-6;高度-6 (包括边框)
右下角阴影 = 宽度,高度-2 */
#define START_FROM_X 190
#define START_FROM_Y 203
/* default of hard is: 190, 203 */
/* =============================== */
/* Struct Define of BMP file */
/* =============================== */
/* 1. BMP文件头
BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息 */
typedef struct tagBITMAPFILEHEADER
{
int bfType; /* 位图文件的类型,必须为BM */ /* offset: 0 */
long bfSize; /* 位图文件的大小,以字节为单位 */ /* offset: 2 */
int bfReserved1; /* 位图文件保留字,必须为0 */ /* offset: 6 */
int bfReserved2; /* 位图文件保留字,必须为0 */ /* offset: 8 */
long bfOffBits; /* 位图数据的起始位置,以相对于位图 / /* offset: 0x0a */
/* 文件头的偏移量表示,以字节为单位 */
} BITMAPFILEHEADER;
/* 2. 位图信息头
BMP位图信息头数据用于说明位图的尺寸等信息。 */
typedef struct tagBITMAPINFOHEADER
{
long biSize; /* 本结构所占用字节数 */ /* offset: 0x0e */
long biWidth; /* 位图的宽度,以像素为单位 */ /* offset: 0×12 */
long biHeight; /* 位图的高度,以像素为单位 / /* offset: 0×16 */
int biPlanes; /* 目标设备的级别,必须为1 */ /* offset: 0x1a */
int biBitCount;/* 每个像素所需的位数,必须是1(双色), / /* offset: 0x1c */
/* 4(16色),8(256色)或24(真彩色)之一 */
long biCompression; /* 位图压缩类型,必须是 0(不压缩), */ /* offset: 0x1e */
/* 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一 */
long biSizeImage; /* 位图的大小,以字节为单位 */
long biXPelsPerMeter; /* 位图水平分辨率,每米像素数 */
long biYPelsPerMeter; /* 位图垂直分辨率,每米像素数 */
long biClrUsed;/* 位图实际使用的颜色表中的颜色数 */
long biClrImportant;/* 位图显示过程中重要的颜色数 */
} BITMAPINFOHEADER;
/* 3. 颜色表 I don’t care */
/* 4. 位图数据
位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。位图的一个像素值所占的字节数:
当biBitCount=1时,8个像素占1个字节;
当biBitCount=4时,2个像素占1个字节;
当biBitCount=8时,1个像素占1个字节;
当biBitCount=24时,1个像素占3个字节;
Windows规定一个扫描行所占的字节数必须是
4的倍数(即以long为单位),不足的以0填充,
一个扫描行所占的字节数计算方法:
DataSizePerLine= (biWidth* biBitCount+31)/8;
// 一个扫描行所占的字节数
DataSizePerLine= DataSizePerLine/4*4; // 字节数必须是4的倍数
位图数据的大小(不压缩情况下):
DataSize= DataSizePerLine* biHeight;
*/
/* =============================== */
/* Mouse */
/* =============================== */
/*
/*鼠标信息宏定义*/
#define WAITING 0xff00
#define LEFTPRESS 0xff01
#define LEFTCLICK 0xff10
#define LEFTDRAG 0xff19
#define RIGHTPRESS 0xff02
#define RIGHTCLICK 0xff20
#define RIGHTDRAG 0xff2a
#define MIDDLEPRESS 0xff04
#define MIDDLECLICK 0xff40
#define MIDDLEDRAG 0xff4c
#define MOUSEMOVE 0xff08
#define BY_KEY 1
#define BY_MOUSE 2
#define BY_COMPUTER 3
/* ————————– */
#include “stdio.h”
#include “conio.h”
#include “dos.h”
#include “stdlib.h”
#include “time.h”
#include “process.h”
#include “ctype.h”
#include “math.h”
#include “graphics.h”
void DispPlayTime(void);
void HideCur(void);
void GetGuan(void);
void GetNextGuan(void);
void MatrixInitial(void);
void CreatMatrix(void);
void MatrixDisp(void);
void DealKey(void);
void MatrixSave(void);
void MatrixLoad(void);
int CanLink(void);
void LinkDisp(void);
int IsMatrixEmpty(void);
int IsMatrixDie(void);
void ReArrangeMatrix(void);
void FindLinkPair(void);
void ClearSelectBank(void);
int SameSelected(void);
void DispAllLink(void);
void UnDispAllLink(void);
int ChooseFromBank(void);
int CheckLink(void);
void ResetCur(void);
char KeyPress(void);
void SwapSelected(void);
void IsLink0p1(void);
void IsLink0p2(void);
void IsLink1p31(void);
void IsLink1p32(void);
void IsLink1p41(void);
void IsLink1p42(void);
void IsLink21p11(void);
void IsLink21p12(void);
void IsLink21p21(void);
void IsLink21p22(void);
void IsLink21p41(void);
void IsLink21p42(void);
void IsLink22p31(void);
void IsLink22p32(void);
void IsLink22p41(void);
void IsLink22p42(void);
void MatrixMove(void);
/* —————- */
void OpenBmpFile(void);
void GetFileInfo(void);
void GetUnit(void);
void ClearMatrix(void);
void FillMatrix(void);
int UnitEmpty(void);
int UnitInList(void);
void CopyChar(unsigned char *to_unit, unsigned char *from_unit);
int CompareChar(unsigned char *unit1, unsigned char *unit2);
void MatrixConvert(void);
int ColorConvert(int ccolor);
void InitialGraph(void);
void DrawUnit(int CharNum);
void DrawUnitS(int CharNum);
void DrawUnitC(int CharNum);
int GetCharNum(void);
void ClearMsgLine(void);
void ClearSelected(void);
/* —— mouse program ———– */
void MouseMath(void);
void MouseOn(int x,int y);
void MouseOff(void);
void MouseLoad(void);
void MouseReset(void);
void MouseSetX(int lx,int rx);
void MouseSetY(int uy,int dy);
void MouseSetXY(int x,int y);
void MouseSpeed(int vx,int vy);
int LeftPress(void);
int MiddlePress(void);
int RightPress(void);
void MouseGetXY(void);
void InitialMouse(void);
void GetMouseCur(void);
void DealMouse(void);
unsigned char matrix[MAX_X+1][MAX_Y+1]; /* x,y use from 1 */ /* if char = 0, means it is empty */
int selected1x, selected1y;
int selected2x, selected2y; /* if = 0 means not selected yet */
int FinishFlag; /* 0 – not finish, other – see finish code define */
char KeyScan;
int LinkType;
int type2xy; /* record the x or y of the link path of type2x.x, example: type 22p42
path is from 1 go up to type2xy(y), then go righ, then go down.
type2xy get its value in function Can.Link(), and use in Link.Disp() */
int curx,cury;
int AutoGoMode=0;
struct time starttime,endtime;
/* ——–here is for store and choose a selected —— */
struct SelectStruct
{
int x1,y1;
int x2,y2;
int type;
int xy2;
};
typedef struct SelectStruct SELECTED;
SELECTED SelectBank[MAX_BANK];
int BankCounter;
int guan;
/* —— here is for grap disp ———- */
BITMAPFILEHEADER FileHead;
BITMAPINFOHEADER InfoHead;
unsigned char *OneLine;
int DataSizePerLine;
int unitx,unity;
unsigned char OneUnit[UNIT_HIGH][UNIT_WIDE];
#define OneUnitSize UNIT_HIGH*UNIT_WIDE
FILE *fp; /* it is use for the BMP file only */
unsigned char CharList[MAX_CHAR][OneUnitSize];
int CharCounter[MAX_CHAR];
int MaxChar=0;
char dispstr[80];
/* ——- here is for mouse ———– */
int PressState;
int MouseExist;
int MouseButton;
int MouseX;
int MouseY;
int up[16][16],down[16][16],mouse_draw[16][16],pixel_save[16][16];
int SelectedBy;
int MouseCurX,MouseCurY;
/* ———————– */
连连看的程序c语言,连连看游戏源程序相关推荐
- c语言五子棋游戏源程序代码,C语言五子棋游戏源代码
<C语言五子棋游戏源代码>由会员分享,可在线阅读,更多相关<C语言五子棋游戏源代码(12页珍藏版)>请在人人文库网上搜索. 1.include#define N 10void ...
- c语言万年历闹钟程序,C语言万年历的源程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 for(j=1;j<=mon[i];j++) {cprintf("%3d ",j); /*if((first+j-1)%7==0 ...
- 编写一个游戏程序(如连连看、五子棋、2048、扫雷、泡泡堂、太鼓)或其他你觉得有意思的程序。
JAVA程序设计: 编写一个游戏程序(如连连看.五子棋.2048.扫雷.泡泡堂.太鼓)或其他你觉得有意思的程序. /// 完成内容如下: (1)可以顺利编译的项目源码: (2)可以直接运行的.exe文 ...
- Java实现连连看源代码文档_Java实现游戏连连看(有源代码)
Java实现游戏连连看(有源代码) JAVA语言实现连连看游戏 1.课程设计目的 Java语言是当今流行的网络编程语言,它具有面向对象.跨平台.分布应用等特点.面向对象的开发方法是当今世界最流行的开发 ...
- c语言程序2048_C语言2048小游戏演示和说明
2048游戏是风靡一时的小游戏,我们提供的2048小游戏不依赖 TC 环境,不依赖任何第三方库,可以在 VS.CodeBlocks.DEV C++ 等常见 IDE中编译通过.我们提供给大家的 2048 ...
- 编程是将c语言编写的源程序,C语言程序设计基础教程习题答案20120319.doc
习题答案 第1章 填空题 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main . 一个函数由__函数头__和__函数体__两部分组成. 在C语言中,输入操作是由库函数__scanf ...
- 迷宫游戏c语言源程序,C语言迷宫游戏设计(源代码+论文)
C语言迷宫游戏设计(源代码+论文) 如有需要请联系 QQ:958035640 摘 要 随着科技的日益发展,计算机信息知识越来越被人们所认知和使用,在当今知识爆炸的时代计算机毫不疑问成为人们常用的日常工 ...
- c语言程序设计小球弹跳,c语言小游戏程序之弹跳小球的实现代码
现在说一下其中一个最简单的小程序:弹跳小球 ---------------LINE---------------- 首先我们知道,在窗口的坐标系原点是在窗口左上角的,如图所示 然后我们如果想在这个坐标 ...
- 超市管理c语言程序,《C语言 超市管理系统源程序》.doc
C语言超市管理系统源程序 超市管理系统源程序代码,要可以执行的.最好是文件,链表中的一种.好了一定重金酬谢~ 最佳答案 有一个小型超市,出售N(N>=10)种商品,设计并实现一个系统,完成下列功 ...
最新文章
- linux权限管理详解,linux权限管理详解-Go语言中文社区
- mysql命令行执行外部文件
- .NET基金会讨论 .NET 开源事业之路
- A4.2021年全国数学建模竞赛A题-赛题分析与评阅要点(FAST主动反射面的形状调节)
- ldaptemplate 分页_UI设计干货分享:设计语言 - 侧边导航栏/分页
- 中文空格字符与英文空格字符怎么区分_设计随笔 | 中英文字符间距与社交网络脱退...
- 逆向:Windows消息钩取
- 马士兵AI人工智能工程师
- Keil5编译环境搭建流程----STM32和GD32
- Ubuntu卸载WPS安装Libreoffice
- Python实现毫秒级抢单,6翻了!
- 管家婆财贸双全ⅡTOP 期间202012的损益类科目本币(外币或者数量)余额不为零,不能年结存。
- 桌面IE不见的处理方法
- C语言用随机函数做猜拳游戏,c语言猜拳游戏
- 世界黑客编程大赛第一名的作品
- 解决苹果电脑OS X 10.8.5 安装双系统,遇到的各种坑
- 手游联运系统隐藏福利大揭秘
- Dubbo Wrapper
- 一周速递|OpenAI:AI通过看视频学会玩《我的世界》,人类第一块量子尺度电路发布
- 利用jTessBoxEditor工具进行Tesseract3.02.02样本训练
热门文章
- 近来发在CSDN畅言上的几篇文章
- .NET UML学习入门
- 8.JVM 关于对象分配在堆、栈、TLAB的理解
- HTTP运作方式、报文格式、工作原理
- Git 从远程库克隆
- 使用mock进行数据拦截实战感悟
- 【包运行】Java swing实现录音、播放、180多种乐器模拟、电子钢琴等功能
- 【ZYNQ Ultrascale+ MPSOC FPGA教程】第八章FPGA片内FIFO读写测试实验
- 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(五) --补遗 (已补充第三部分完整版)...
- Working out