最近在唯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语言,连连看游戏源程序相关推荐

  1. c语言五子棋游戏源程序代码,C语言五子棋游戏源代码

    <C语言五子棋游戏源代码>由会员分享,可在线阅读,更多相关<C语言五子棋游戏源代码(12页珍藏版)>请在人人文库网上搜索. 1.include#define N 10void ...

  2. c语言万年历闹钟程序,C语言万年历的源程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 for(j=1;j<=mon[i];j++) {cprintf("%3d ",j); /*if((first+j-1)%7==0 ...

  3. 编写一个游戏程序(如连连看、五子棋、2048、扫雷、泡泡堂、太鼓)或其他你觉得有意思的程序。

    JAVA程序设计: 编写一个游戏程序(如连连看.五子棋.2048.扫雷.泡泡堂.太鼓)或其他你觉得有意思的程序. /// 完成内容如下: (1)可以顺利编译的项目源码: (2)可以直接运行的.exe文 ...

  4. Java实现连连看源代码文档_Java实现游戏连连看(有源代码)

    Java实现游戏连连看(有源代码) JAVA语言实现连连看游戏 1.课程设计目的 Java语言是当今流行的网络编程语言,它具有面向对象.跨平台.分布应用等特点.面向对象的开发方法是当今世界最流行的开发 ...

  5. c语言程序2048_C语言2048小游戏演示和说明

    2048游戏是风靡一时的小游戏,我们提供的2048小游戏不依赖 TC 环境,不依赖任何第三方库,可以在 VS.CodeBlocks.DEV C++ 等常见 IDE中编译通过.我们提供给大家的 2048 ...

  6. 编程是将c语言编写的源程序,C语言程序设计基础教程习题答案20120319.doc

    习题答案 第1章 填空题 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main . 一个函数由__函数头__和__函数体__两部分组成. 在C语言中,输入操作是由库函数__scanf ...

  7. 迷宫游戏c语言源程序,C语言迷宫游戏设计(源代码+论文)

    C语言迷宫游戏设计(源代码+论文) 如有需要请联系 QQ:958035640 摘 要 随着科技的日益发展,计算机信息知识越来越被人们所认知和使用,在当今知识爆炸的时代计算机毫不疑问成为人们常用的日常工 ...

  8. c语言程序设计小球弹跳,c语言小游戏程序之弹跳小球的实现代码

    现在说一下其中一个最简单的小程序:弹跳小球 ---------------LINE---------------- 首先我们知道,在窗口的坐标系原点是在窗口左上角的,如图所示 然后我们如果想在这个坐标 ...

  9. 超市管理c语言程序,《C语言 超市管理系统源程序》.doc

    C语言超市管理系统源程序 超市管理系统源程序代码,要可以执行的.最好是文件,链表中的一种.好了一定重金酬谢~ 最佳答案 有一个小型超市,出售N(N>=10)种商品,设计并实现一个系统,完成下列功 ...

最新文章

  1. linux权限管理详解,linux权限管理详解-Go语言中文社区
  2. mysql命令行执行外部文件
  3. .NET基金会讨论 .NET 开源事业之路
  4. A4.2021年全国数学建模竞赛A题-赛题分析与评阅要点(FAST主动反射面的形状调节)
  5. ldaptemplate 分页_UI设计干货分享:设计语言 - 侧边导航栏/分页
  6. 中文空格字符与英文空格字符怎么区分_设计随笔 | 中英文字符间距与社交网络脱退...
  7. 逆向:Windows消息钩取
  8. 马士兵AI人工智能工程师
  9. Keil5编译环境搭建流程----STM32和GD32
  10. Ubuntu卸载WPS安装Libreoffice
  11. Python实现毫秒级抢单,6翻了!
  12. 管家婆财贸双全ⅡTOP 期间202012的损益类科目本币(外币或者数量)余额不为零,不能年结存。
  13. 桌面IE不见的处理方法
  14. C语言用随机函数做猜拳游戏,c语言猜拳游戏
  15. 世界黑客编程大赛第一名的作品
  16. 解决苹果电脑OS X 10.8.5 安装双系统,遇到的各种坑
  17. 手游联运系统隐藏福利大揭秘
  18. Dubbo Wrapper
  19. 一周速递|OpenAI:AI通过看视频学会玩《我的世界》,人类第一块量子尺度电路发布
  20. 利用jTessBoxEditor工具进行Tesseract3.02.02样本训练

热门文章

  1. 近来发在CSDN畅言上的几篇文章
  2. .NET UML学习入门
  3. 8.JVM 关于对象分配在堆、栈、TLAB的理解
  4. HTTP运作方式、报文格式、工作原理
  5. Git 从远程库克隆
  6. 使用mock进行数据拦截实战感悟
  7. 【包运行】Java swing实现录音、播放、180多种乐器模拟、电子钢琴等功能
  8. 【ZYNQ Ultrascale+ MPSOC FPGA教程】第八章FPGA片内FIFO读写测试实验
  9. 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(五) --补遗 (已补充第三部分完整版)...
  10. Working out