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功能介绍,IDE配置以及资源下载
目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新公司,主要做的就是salesforce,不过当时想要看一些相关资料确实比较难.为了避免想要零基础学习的人 ...
- Android 代码混淆之部分类不混淆的技巧
在编写Android程序之后,我们通常要代码进行混淆编码,这样才能保证市场上我们的应用不会被别人进行反编译,然后破解,所以此时需要在发布正式版本的时候,有一些类事不能混淆的,比如实现了 Seriali ...
- WPF入门教程系列八——布局之Grid与UniformGrid(三)
五. Grid Grid顾名思义就是“网格”,它的子控件被放在一个一个实现定义好的小格子里面,整齐配列. Grid和其他各个Panel比较起来,功能最多也最为复杂.要使用Grid,首先要向RowDef ...
- oracle 中 rownum 和 row_number()
简单的介绍下oracle 中rownum 和 row_number() 使用,实例演示. 参照:http://www.cnblogs.com/zjrstar/archive/2006/08/31/49 ...
- 快速入门系列--TSQL-01基础概念
作为一名程序员,对于SQL的使用算是基础中的基础,虽然也写了很多年的SQL,但常常还是记不清一些常见的命令,故而通过一篇博文巩固相关的记忆,并把T-SQL本身的一些新特性再进行一次学习. 首先回顾基础 ...
- 当你还在纠结于ORM的性能时,我已经远远的把你抛在脑后
最近找工作面试,问到一些过去的工作和项目经验.我把公司用到的ORM框架(LLBL Gen)拿出来谈一谈,说一下他的优势,对方却一直追问ORM的好处,性能方面的问题,让我有时候都不知道如何回答,产生了不 ...
- 第四章 HTML与JavaScript
DHTML就是与CSS和Web文档进行交互生成动态页面的JavaScript. 4.1HTML文档剖析 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML ...
- Android开发常用属性
1.android string.xml 文字中间加入空格 android string.xml前后加空格的技巧 <string name="password">密 ...
- hdu 1241 Oil Deposits (一次dfs搞定有某有)
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> us ...
- 深入解读A/B 测试的统计学原理
了解一些统计学知识对正确地进行 A/B 测试和研判试验结果是很有帮助的,本篇文章深入介绍了A/B 测试的原理和背后的统计学依据.完全理解本文中提到的数学计算需要你掌握概率方面的一点基础知识. 统计学在 ...