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

图片是自己慢慢截左上部分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制作拼图游戏的更多相关文章

  1. atitit.html5 拼图游戏的解决之道.

    atitit.html5 拼图游戏的解决之道. 1. 拼图游戏的操作(点击法and 拖动法) 1 1. 支持键盘上.下.左.右键移动: 1 2. 支持点击空白模块中的上下左右箭头移动: 1 3. 支持 ...

  2. HTML+Javascript制作拼图小游戏详解(终)

    上次我们已经讲解了制作的原理,并且展示了主要代码. 这次我将完整的代码给大家,仅供参考. HTML部分如下: <!DOCTYPE html> <html lang="en& ...

  3. HTML+Javascript制作拼图小游戏详解(一)

    本文章将分享一个来自前端菜鸟突发奇想的拼图游戏制作方法以及实现过程. 话不多说,先上图. 首先我们需要写好网页的基本布局(此处涉及简单的HTML和CSS知识). 网页一共分为三个区域,左侧时间显示区, ...

  4. 使用CocosSharp制作一个游戏 - CocosSharp中文教程

    注:本教程翻译自官方<Walkthrough - Building a game with CocosSharp>,官方教程有很多地方说的不够详细,或者代码不全,导致无法继续,本人在看了G ...

  5. 利用Vue.js实现拼图游戏

    之前写过一篇<基于Vue.js的表格分页组件>的文章,主要介绍了Vue组件的编写方法,有兴趣的可以访问这里进行阅读:http://www.cnblogs.com/luozhihao/p/5 ...

  6. JavaScript拼图游戏

    今天是2016年最后一天上班了.最近几天都比较休闲,有时间空闲下来写写文档之类的. 2016过得真是快.感觉没做什么就过去了.想到之前想坚持每个月写一写博客都没坚持到.希望2017年可以吧. 无聊之余 ...

  7. 拼图游戏(js,C#,java三种语言)

    <html> <head> <meta charset="utf-8"> <style type="text/css" ...

  8. JavaScript写一个拼图游戏

    拼图游戏的代码400行, 有点多了, 在线DEMO的地址是:打开: 因为使用canvas,所以某些浏览器是不支持的: you know: 为什么要用canvas(⊙o⊙)?  因为图片是一整张jpg或 ...

  9. Cocos2d-x v3.6制作射箭游戏(二)

    原文 Cocos2d-x v3.6制作射箭游戏(二) 六 24, 2015by RENSHANin COCOS2D-X 上章我们创建并加载了游戏地图,接下来的两章我们将实现如下的效果. 在开始之前,先 ...

随机推荐

  1. redis基本配置和相关设置

    redis-cli:the redis command line interface command line usage: $redis-cli incr mycounter 输出的结果只会显示在终 ...

  2. spring 学习

    一.spring框架介绍 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供 ...

  3. Oracle之DBMS_RANDOM包详解

    DBMS_RANDOM是Oracle提供的一个PL/SQL包,用于生成随机数据和字符.它具有以下函数. 其中,initialize,random,terminate函数在Oracle11g中已不推荐使 ...

  4. 高拍仪拍照SDK开发(良田影像S300L|S500L)

    高拍仪拍照SDK开发下载地址:点击下载 本SDK适用于:良田影像S300L|S500L 高拍仪如图: SDN开发包安装之后找到安装目录,如图: 大家找到各自需要的版本即可,需要注意的是如果需要上传图片 ...

  5. shell脚本学习心得

    近来主要捣鼓ubuntu,大多数项目中都用到了sh脚本作为启动脚本等,以前只是大概明白如何使用,今天需要自己修改并运行脚本就碰到了很多问题,所以决定静下心来学习一下shell脚本,学习了几个小时,现将 ...

  6. H5游戏开发之抓住小恐龙

    第一次写技术性博文,以前都只是写一些生活感想,记录一些生活发生的事情. 博主大三学生一枚,目前学习JS一年多,还处于学习阶段,有什么说的不好的希望大牛指点下,由于第一次写博文,排版什么的有待改进,希望 ...

  7. DRA(Data Recovery Advisor)的使用

    关于DRA的官方描述: The simplest way to diagnose and repair database problems is to use the Data Recovery Ad ...

  8. Skeljs – 用于构建响应式网站的前端开发框架

    skelJS 是一个轻量级的前端框架,用于构建响应式站点和应用程序.让设计人员和开发人员可能够使用四个强大的组件:CSS 网格系统,响应式处理程序,CSS 的快捷方式和插件系统. 您可能感兴趣的相关文 ...

  9. oracle表数据类型number对应java中BIgDecimal转int

    oracle中id为number类型,在java获取id时用getBigDecimal 相匹配, 如果想转换成int,重写model中的getInt方法: public Integer getInt( ...

  10. nodejs学习笔记二——链接mongodb

    a.安装mongoose库用来链接mongodb数据库 安装mongodb数据库参考mongodb安装 前言(怨言) 本来是想安装mongodb库来链接mongodb的,命令行到nodejs工程目录: ...