SDL制作拼图游戏
看完教程第三集后,好像自己能用这个来写一个简单的拼图游戏,第一次写出个带界面的游戏,好有成就感。

图片是自己慢慢截左上部分8个脸。
#include <stdio.h>
#include <stdlib.h>
#include <SDL.h>
#include <SDL_image.h>
struct pos{
int x,y;
};
int main(int argc, char *argv[])
{
SDL_Init(SDL_INIT_VIDEO);
{
SDL_Window *window = SDL_CreateWindow("Picture Game",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
, ,
SDL_WINDOW_SHOWN);
SDL_Surface *surface = SDL_GetWindowSurface(window);
SDL_Surface *face = IMG_Load("face.png");
SDL_Surface *face1 = IMG_Load("face1.png");
SDL_Surface *face2 = IMG_Load("face2.png");
SDL_Surface *face4 = IMG_Load("face4.png");
SDL_Surface *face5 = IMG_Load("face5.png");
SDL_Surface *face6 = IMG_Load("face6.png");
SDL_Surface *face7 = IMG_Load("face7.png");
SDL_Surface *face8 = IMG_Load("face8.png");
SDL_Surface *face9 = IMG_Load("face9.png");
SDL_Surface *heitu = IMG_Load("null.png");
SDL_Rect rect;
SDL_Surface *faceMatrix[][]={ {face7,face8,face9},
{face4,face2,face5},
{face1,face6,NULL} };
int i, j;
;
struct pos null;
SDL_Event event;
;
;
SDL_BlitSurface(face,NULL,surface,NULL);
)
{
while (SDL_PollEvent(&event))
{
if (event.type == SDL_QUIT)
quit = ;
else if (event.type == SDL_MOUSEBUTTONDOWN)
{
if (event.button.button == SDL_BUTTON_LEFT)
printf("Mouse Left Button \n");
else if (event.button.button == SDL_BUTTON_RIGHT)
printf("Mouse Right Button \n");
}
else if (event.type == SDL_KEYDOWN)
{
if (event.key.keysym.sym == SDLK_UP)
{
)
{
faceMatrix[][null.y];
faceMatrix[][null.y] = NULL;
;
}
}
else if (event.key.keysym.sym == SDLK_DOWN)
{
)
{
faceMatrix[][null.y];
faceMatrix[][null.y] = NULL;
;
}
}
else if (event.key.keysym.sym == SDLK_LEFT)
{
)
{
faceMatrix[];
faceMatrix[] = NULL;
;
}
}
else if (event.key.keysym.sym == SDLK_RIGHT)
{
)
{
faceMatrix[];
faceMatrix[] = NULL;
;
}
}
else
printf("keyboard\n");
}
}
//画图
; i<; i++)
{
; j<; j++)
{
if (faceMatrix[i][j]!=NULL)
{
rect.y = + i*;
rect.x = + j*;
SDL_BlitSurface(faceMatrix[i][j],NULL,surface,&rect);
}
else
{
rect.y = + i*;
rect.x = + j*;
SDL_BlitSurface(heitu,NULL,surface,&rect);
}
}
}
//判断胜利
][] && face8==faceMatrix[][] && face9==faceMatrix[][] &&
face4==faceMatrix[][] && face5==faceMatrix[][] && face6==faceMatrix[][] &&
face1==faceMatrix[][] && face2==faceMatrix[][] )
{
printf("游戏胜利! 按任意键结束\n");
quit = ;
}
//SDL_FillRect(surface,NULL,0); 整个画面涂黑
SDL_UpdateWindowSurface(window);
}
; i<; i++)
; j<; j++)
SDL_FreeSurface(faceMatrix[i][j]);
SDL_FreeSurface(heitu);
SDL_FreeSurface(face);
SDL_DestroyWindow(window);
SDL_Quit();
}
getchar();
;
}
这个还没有实现图片的随机分布。有兴趣的可以自己实现下。
SDL制作拼图游戏的更多相关文章
- atitit.html5 拼图游戏的解决之道.
atitit.html5 拼图游戏的解决之道. 1. 拼图游戏的操作(点击法and 拖动法) 1 1. 支持键盘上.下.左.右键移动: 1 2. 支持点击空白模块中的上下左右箭头移动: 1 3. 支持 ...
- HTML+Javascript制作拼图小游戏详解(终)
上次我们已经讲解了制作的原理,并且展示了主要代码. 这次我将完整的代码给大家,仅供参考. HTML部分如下: <!DOCTYPE html> <html lang="en& ...
- HTML+Javascript制作拼图小游戏详解(一)
本文章将分享一个来自前端菜鸟突发奇想的拼图游戏制作方法以及实现过程. 话不多说,先上图. 首先我们需要写好网页的基本布局(此处涉及简单的HTML和CSS知识). 网页一共分为三个区域,左侧时间显示区, ...
- 使用CocosSharp制作一个游戏 - CocosSharp中文教程
注:本教程翻译自官方<Walkthrough - Building a game with CocosSharp>,官方教程有很多地方说的不够详细,或者代码不全,导致无法继续,本人在看了G ...
- 利用Vue.js实现拼图游戏
之前写过一篇<基于Vue.js的表格分页组件>的文章,主要介绍了Vue组件的编写方法,有兴趣的可以访问这里进行阅读:http://www.cnblogs.com/luozhihao/p/5 ...
- JavaScript拼图游戏
今天是2016年最后一天上班了.最近几天都比较休闲,有时间空闲下来写写文档之类的. 2016过得真是快.感觉没做什么就过去了.想到之前想坚持每个月写一写博客都没坚持到.希望2017年可以吧. 无聊之余 ...
- 拼图游戏(js,C#,java三种语言)
<html> <head> <meta charset="utf-8"> <style type="text/css" ...
- JavaScript写一个拼图游戏
拼图游戏的代码400行, 有点多了, 在线DEMO的地址是:打开: 因为使用canvas,所以某些浏览器是不支持的: you know: 为什么要用canvas(⊙o⊙)? 因为图片是一整张jpg或 ...
- Cocos2d-x v3.6制作射箭游戏(二)
原文 Cocos2d-x v3.6制作射箭游戏(二) 六 24, 2015by RENSHANin COCOS2D-X 上章我们创建并加载了游戏地图,接下来的两章我们将实现如下的效果. 在开始之前,先 ...
随机推荐
- JavaScript到底是不是单线程
JavaScript到底是不是单线程 JavaScript引擎 在了解计时器内部运作前,我们必须清楚一点,触发和执行并不是同一概念,计时器的回调函数一定会在指定delay的时间后被触发,但并不一定立即 ...
- CSS层模型
参考:慕课网 点此可进 如何让html元素在网页中精确定位,就像图像软件PhotoShop中的图层一样可以对每个图层能够精确定位操作.CSS定义了一组定位(positioning)属性来支持层布局模型 ...
- LinkedHashMap源码详解
序言 本来是不打算先讲map的,但是随着对set集合的认识,发现如果不先搞懂各种map,是无法理解set的.因为set集合很多的底层就是用map来存储的.比如HashSet就是用HashMap,Lin ...
- 快速入门系列--MVC--05行为
Action执行包含内容比较多,主要有同步/异步Action的概念和执行过程,Authorationfilter, ActionFiltor, ResultFilter, ExceptionFilte ...
- 快速入门系列--MVC--07与HTML5移动开发的结合
现在移动互联网的盛行,跨平台并兼容不同设备的HTML5越来越盛行,很多公司都在将自己过去的非HTML5网站应用渐进式的转化为HTML5应用,使得一套代码可以兼容不同的物理终端设备和浏览器,极大的提高了 ...
- 深入理解PHP内核(十四)类的成员变量及方法
原文链接:http://www.orlion.ga/1237/ 类的成员变量在PHP中本质是一个变量,只是这些变量都归属于某个类,并且给这些变量是有访问控制的. 类的成员方法在PHP中本质是一个函数, ...
- 轻松搭建Unity3D 安卓Android开发环境
1,下载安装Java的JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html (JDK中,包含JRE) 如果是6 ...
- SQL Server优化器特性-动态检索
前段时间我写的文章SQL Server 隐式转换引发的躺枪死锁 中有的朋友评论回复说在SQL2008R2测试时并未出现死锁,自己一测果然如此,因此给大家带来的疑惑表示抱歉,这里我就解释下其原因. 回顾 ...
- SQL Server中参数化SQL写法遇到parameter sniff ,导致不合理执行计划重用的一种解决方案
parameter sniff问题是重用其他参数生成的执行计划,导致当前参数采用该执行计划非最优化的现象.想必熟悉数据的同学都应该知道,产生parameter sniff最典型的问题就是使用了参数化的 ...
- 《Inside UE4》-0-开篇
<Inside UE4>-0-开篇 InsideUE4 前言 VR行业发展是越来越火热了,硬件设备上有HTC VIVE,Oculus rift,PS VR,各种魔镜:平台上有Steam ...