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

图片是自己慢慢截左上部分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. fir.im Weekly - iOS 保持界面流畅的技巧

    生命不息,coding 不止.本期 fir.im Weekly 收集了微博上的热转资源,包含 Android.iOS 开发工具.源码分享,产品 UI 设计的好文章,还有一些程序员成长的 Tips,希望 ...

  2. 修改WebBrowser控件的内核解决方案

    方法一 加入你想让WebBrowser控件的渲染模式编程IE8的标准模式, 你可以通过设置注册表FEATURE_BROWSER_EMULATION 来实现. 示例: 注册表中注明当前本机装的IE版本H ...

  3. SpringSide 部署showcase项目出现 JAX-RS (REST Web Services) 2.0 can not be installed错误!

    maven+springmvc错误 JAX-RS (REST Web Services) 2.0 can not be installed 项目problem提示错误 JAX-RS (REST Web ...

  4. 开源项目IPProxys的使用

    前几天看了一下github上,IPProxys开源项目(https://github.com/qiyeboy/IPProxys)快100star了,看来大家对这个项目还是比较感兴趣的.最近一直没更新文 ...

  5. echart饼状图使用,打发时间。

    新公司,刚来几天,闲着没事,领导让我做些无关痛痒的活,优化报表统计!!!之前是用flash做的,现在要改成echart实现.好吧,之前没用过,抱着学习态度,研究了下.写点东西打发下时间,能帮到需要帮助 ...

  6. 深入理解javascript作用域系列第二篇——词法作用域和动态作用域

    × 目录 [1]词法 [2]动态 前面的话 大多数时候,我们对作用域产生混乱的主要原因是分不清楚应该按照函数位置的嵌套顺序,还是按照函数的调用顺序进行变量查找.再加上this机制的干扰,使得变量查找极 ...

  7. Android控件之WebView

    如何在Android应用中打开Web网站呢?谷歌为我们提供了解决方案,现在就让我们一起看一下WebView控件吧. 为了方便总结,就以实现下面这个效果为主线,进行总结: 首先我们先看一下它的布局文件吧 ...

  8. Sort the Array

    /* 思路: 找到单调下降串的起始位置[l, r] 如果左边 0...l-1中的最大值 > l...r中的最小值 或者 r+1...n中的最小值 < l...r中的最大值 都是不能实现排序 ...

  9. (转)Shell函数

    Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以速度很快,另外,Shell还能对函数进行预处理,所以函数的启动比脚本更快. 1.  函数 ...

  10. AIX下tar解包问题

    今天,在AIX下安装tomcat,上传的版本是apache-tomcat-6.0.41.tar.gz,但用tar解压时出现以下问题: # tar xvf apache-tomcat-6.0.41.ta ...