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 上章我们创建并加载了游戏地图,接下来的两章我们将实现如下的效果. 在开始之前,先 ...
随机推荐
- salesforce 零基础开发入门学习(十四)salesforce中工厂模式的运用
提到工厂模式,想必大家都很熟悉,工厂模式作为一种设计模式,同样在salesforce中适用. 举一个例子,笔作为基类,可以有钢笔,铅笔,圆珠笔等等.有一个笔的工厂,当你向它要钢笔,它就会生产一支钢笔; ...
- iOS-----用LLDB调试,让移动开发更简单(二)
image lookup –address 当我们有一个地址,想查找这个地址具体对应的文件位置,可以使用image lookup --address,简写为image lookup -a e.g: 当 ...
- XML学习笔记6——XPath语言
在上一篇笔记的结尾,我们接触到了两个用于选择XML文档中特定范围的元素<selector>和<field>,这两个元素的取值都是XPath表达式,那么,什么是XPath呢?简单 ...
- ngRoute AngularJs自带的路由
ngRoute $routeProvider 配置路由的时候使用. 方法: when(path,route); 在$route服务里添加一个新的路由. path:该路由的路径. route:路由映射信 ...
- 关于pt与px
pt:point,点,是印刷业一个标准的长度单位,1pt=1/72英寸: 在Windows里,默认的显示设置中,把文字定义为96dpi.这说明了:1px=1/96英寸:而1pt=1/72英寸,可以得 ...
- [c++] STL = Standard Template Library
How many people give up, because of YOU. Continue... 先实践,最后需要总结. 1. 数据流中的数据按照一定的格式<T>提取 ------ ...
- 数据结构:JAVA_二叉数查找树基本实现(中)
数据结构:二叉数查找树基本实现(JAVA语言版) 1.写在前面 二叉查找树得以广泛应用的一个重要原因是它能保持键的有序性,因此我们可以把它作为实现有序符号表API中的众多方法的基础. 也就是说我们构建 ...
- [转载]UML类图总结
前言 类图和序列图是UML中最常用的两种Diagram.我将做详细的总结.在许多书中,或者网站中,在介绍一个系统的子系统的设计时,很多时候,都是给出简单的类图来简述构成子系统的类之间的关系.这足以说明 ...
- WebStorm 9 配置 Live Edit 功能与浏览器实现同步
1. 打开Chrome浏览器,点击右上角的“自定义及控制”按钮,选择“更多工具”-->”扩展程序”,打开“扩展程序”页面. 其实以上步骤可以简化为:用Chrome打开chrome://exten ...
- Bourbon – 简单轻量的 Sass 混入(Mixins)库
Bourbon 是一个简单易用的 Sass 混入(Mixin)库,无需配置.该混入包含用于支持所有现代浏览器的 CSS3 属性前缀.前缀需要确保在旧的浏览器支持优雅降级.Bourbon 使用 SCSS ...