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

图片是自己慢慢截左上部分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. javascript_core_10之继承与数组API

    1.现有两对象间的继承:Object.setPrototypeOf(child,father): 2.基于现有父对象创建子对象:var child=Object.create(father,{新属性} ...

  2. 用例设计工具PICT — 输入组合覆盖

    1 成对测试简介 成对测试(Pairwise Testing)又称结对测试.两两测试,是一种正交分析的测试技术.成对组合覆盖这一概念是Mandl于1985年在测试Aad编译程序时提出来的.是当不可能遍 ...

  3. 本地MVC项目发布到IIS服务器

    0瞎扯 朋友们有时候我们写个一个web程序只能使用卡西尼服务器调试,下面我教大家发布到IIS服务器上(包括本地ISS7.5和远程服务器 IIS) 1.VS发布 a.点击web项目->发布

  4. 【WP 8.1开发】电子罗盘

    罗盘,估计也不用我过多介绍,学过初中物理的都知道,不管是指南针,还是指北针,其本质就是用来辨别方向的. 操作电子罗盘伟感器也不复杂,主要就是两个角度: 1.当前方向与磁北的夹角: 2.当前方向与地北的 ...

  5. 深入理解PHP内核(五)函数的内部结构

    php的函数包括用户定义的函数.内部函数(print_r count...).匿名函数.变量函数($func = 'print_r'; $func(array('a','b'));) PHP内核源码中 ...

  6. Zookeeper-Zookeeper的配置

    前面两篇文章介绍了Zookeeper是什么和可以干什么,那么接下来我们就实际的接触一下Zookeeper这个东西,看看具体如何使用,有个大体的感受,后面再描述某些地方的时候也能在大脑中有具体的印象.本 ...

  7. 如何用分析函数找出EMP表中每个部门工资最高的员工

    EMP表是Oracle测试账户SCOTT中的一张雇员表,首先,我们来看看emp表的数据 SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE ...

  8. (转)rlwrap真是一个好东西

    在Linux下面使用sqlplus很不爽,上下键,退格键都不能用,严重降低生产效率. 某一天终于发现了这个rlwrap这个好东西,特写此文记录. 下载地址如下: http://utopia.knowa ...

  9. Java多线程系列--“JUC集合”05之 ConcurrentSkipListMap

    概要 本章对Java.util.concurrent包中的ConcurrentSkipListMap类进行详细的介绍.内容包括:ConcurrentSkipListMap介绍ConcurrentSki ...

  10. Redis安装配置与Jedis访问数据库

    一.NOSQL概要 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库.NoSQL数据库的四大分类 键值(Key-Value)存储数据库 这一类数据 ...