基于Linux系统的SDL图形库记忆翻牌小游戏

步骤1:显示图片

用二维数组来显示8张90×90的配对图片,用来翻转的;首先显示的是背景图片。定义一个二维数组pic[4][4] 来表示每张小图片存放的位置,数组里面存放0~7的数字,当前位置存放是0,就表示该位置要显示image0小图片。这样就可以显示所有小图片了。

步骤2: 实现可以翻转

根据鼠标点击的位置,翻转指定的小图片,而且要自动的翻转回来,主要是鼠标的获取和定位;定义一个二维数组flag[mouse_y/90][mouse_x/90] 来标志有没有翻转,鼠标点击的坐标位置除以90就可以确定点击的是哪张小图片。

步骤3: 游戏逻辑翻转

所谓逻辑翻转就是根据游戏的规则翻转和不翻转图片,就是当鼠标点击次数为偶数时,判断前面的一张图片和当前这张图片是否相同,如果是相同的,这两张图片就不要翻转回背面,否则,就把这两张图片都翻转回背面。主要还是怎样判断两张图片是否相同,解决方法是根据一开始的二维数组pic[4][4]里面存放的数字是否是相同的来判断两张图片是否是相同的。直到所有的小图片都被翻转了游戏就结束。最后利用了SDL的强大功能弄了一个动画的界面来结束游戏。

下面是完整的代码:

#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include <string>
#include <stdio.h>
#include <time.h>

const int SCREEN_WIDTH = 360;    //屏幕宽
const int SCREEN_HEIGHT =  360; //屏幕高
const int SCREEN_BPP = 32;          //屏幕像素

const int FRAMES_PER_SECOND = 10;

const int FOO_WIDTH = 90;    //小图片90*90
const int FOO_HEIGHT = 90;


SDL_Surface * foo = NULL;
SDL_Surface * screen = NULL;
SDL_Surface *image0 = NULL;
SDL_Surface *image1 = NULL;
SDL_Surface *image2 = NULL;
SDL_Surface *image3 = NULL;
SDL_Surface *image4 = NULL;
SDL_Surface *image5 = NULL;
SDL_Surface *image6 = NULL;
SDL_Surface *image7 = NULL;
SDL_Surface *Menu = NULL;
SDL_Surface *beginBg = NULL;
SDL_Surface * endBg = NULL;

SDL_Event  event;

//定义一个二维数组,用来保存图片索引

int pic[4][4];
bool flag[4][4]; //标记图像是否翻开

bool mousecheck; //记录鼠标点击状态
int pic_x, pic_y; //图片索引

int mouse_x;
int mouse_y; //鼠标点击位置

bool quit = false;
bool lock;

int GameState;//游戏当前状态
const int BEGIN = 0;//开始状态
const int RUN = 1;//运行状态
const int END = 2;//结束状态

SDL_Rect MenuRect[2];

SDL_Rect EndRect[2];
int end_y;

class Foo
{
private:
	int offSet;
	int velocity;
	int frame;

public:
	Foo();
	
	int handle_events();
	
	void show();
};

Foo Show;

Foo::Foo()
{
	offSet = 0;
	velocity = 0;
}
//读入图片
SDL_Surface *load_image(std::string filename)
{
	SDL_Surface * loadedImage = N
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
XO_OX 0.0 这些是“XO_OX"的注解。它们会让你全面了解这个游戏,并会说明如何安装它。 什么是“XO_OX"? “XO_OX"又名“五子棋”,五子棋则咸信是流传于古中国的传统棋种之一,至今仍在民间广泛流传,规则相当简单。或许因没有形成一套独立完整的棋种理论及文化内涵,更无制定公平完善的规则来解决黑白平衡问题,一直没有得到发展,所以没有像六博、格五、弹棋等传统棋类流传广泛,导致缺少可考古的棋具或文献,直到流传到外国才规则改革。 不管是哪种五子棋,棋手在先后手的观念、空间的思维及对棋形的理解都十分重要。 游戏规则: * 行棋:一人流轮一著下于棋盘空点处,下后不得移动。 * 胜负:先把五枚或以上己棋相连成任何横纵斜方向为胜。 * 和棋: o 行棋中一方提出和棋,另一方同意则判和棋。 o 棋子落满整张棋盘仍未分出胜负为和棋。 o 一方PASS后另一方下一手也PASS为和棋。 技术规格说明: 1、用C语言调用SDL实现; 2、基于LGPL协议。 3、程序中用到了SDL_image扩展包 如何安装: 1、在终端中运行make 2、在终端中运行make install 如何卸载: make uninstall 历史: 一、2011年8月15日 项目开始,谢红负责图形模块,赵梓辰负责游戏逻辑,吕玉飞负责事件响应,范人豪负责整体架构。 二、2011年8月17日 为了增加游戏的可玩性,项目由圈叉棋升级为五子棋。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值