纯c语言写的拼图游戏

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>  

int step=0;  

void map()//游戏菜单函数。
{   printf("▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");
    printf("█   拼 图 游 戏          █\n");
    printf("█      1.   3×3         █\n");
    printf("█      2.   4×4         █\n");
    printf("█      3.   5×5         █\n");
    printf("█      4.   退出         █\n");
    printf("▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");
}  

void fun(int *a,int t,int m,int r)
{
    int i;
    int g;  

    for(i=0;i<m;i++)
    {
        if(i%r==(r-1)&&(i+t)%r==0)//让数组不能跨行转换。
            continue;
        if(i%r==0&&(i+t)%r==(r-1))
            continue;
        if(a[i+t]==0 && (i+t)>=0 && (i+t)<m)
        {
            g=a[i];
            a[i]=a[i+t];
            a[i+t]=g;
            step++;
            return ;
        }
    }
}  

void move(int *a,int m,int r)
{//上下左右移动函数。
    char ch;
    int i,j;  

    while(ch=getch())
    {
        system("cls");  

        if(ch=='w')
        {
           i=-r;
            fun(a,i,m,r);
        }
        else if(ch=='s')
        {
            i=r;
            fun(a,i,m,r);
        }
        else if(ch=='a')
        {
            i=-1;
            fun(a,i,m,r);
        }
        else if(ch=='d')
        {
            i=1;
            fun(a,i,m,r);
        }
        else if(ch=='4')
        {
            printf("您已退出游戏,请下次再玩!\n");
            exit(0);
        }  

        for(i=0;i<m;i++)
        {
            if(a[i]==0)
                printf("    ");
            else
                printf("%2d  ",a[i]);
            if((i+1)%r==0)
            putchar(10);
        }
        printf("共走:%d步!\n",step);
    }
}  

void map_x(int m,int r)
{
    int i=1,j,a[25],n;
    srand(time(NULL));
    printf("拼图游戏开始了:\n");
    while(i<m)
    {
        n=1+rand()%(m-1);
        for(j=1;j<i;j++)
        {
            if(n==a[j])
                break;
        }
        if(j==i)
        {
            a[i]=n;
            i++;
        }
    }
    a[0]=0;
    for(i=0;i<m;i++)
    {
        if(a[i]==0)
            printf("    ");
        else
            printf("%2d  ",a[i]);
        if((i+1)%r==0)
            putchar(10);
    }
    printf("共走:%d步!\n",step);
    move(a,m,r);
}  

int main()
{
    int i,n;
    char ch;
    map();//显示菜单。
    printf("请选择所玩游戏的级别:\n");
    ch=getch();
    while(ch!='1' && ch!='2' && ch!='3' &&ch!='4')
    {
        printf("输入有误,请重新输入:\n");
        ch=getch();
    }  

    switch(ch)
    {
        case '1':
            map_x(9,3);
            break;
        case '2':
            map_x(16,4);
            break;
        case '3':
            map_x(25,5);
            break;
        case '4':
            printf("您已退出游戏,请下次再玩!\n");
            exit(0);
            break;
    }
    return 0;
}  
时间: 2024-07-30 08:00:07

纯c语言写的拼图游戏的相关文章

纯C语言版黄金点游戏

最近花了一段时间自学TCP/IP网络编程技术,掌握了基于TCP的C/S网络通信模型,熟悉了服务器和客户端软件程序的设计流程,并且利用多线程和互斥锁.条件变量等实现了并发机制. 项目介绍 开发环境:Visual Studio 2013运行环境:Windows 7及以上版本网络模型:使用基于TCP的C/S网络通信模型,实现黄金点游戏框架.语言技术:纯C语言开发,支持多线程,采用互斥锁和条件变量完成线程之间的同步和异步. 程序功能 服务器:用户的连接和断开都有相应的提示.一有新用户连接,服务器自动创建

不好意思啊,我上周到今天不到10天时间,用纯C语言写了一个小站!想拍砖的就赶紧拿出来拍啊

花10天时间用C语言做了个小站 http://tieba.yunxunmi.com/index.html 简称: 云贴吧 不好意思啊.我上周到今天不到10天时间.用纯C语言写了一个小站!想拍砖的就赶紧拿出来拍啊 估计採集1000万贴,欢迎大家狠狠的来拍吧! 整站大小(网页+C ISAPI类库)不到1MB 容量大.速度快.不管什么贴,随便贴吧,就是量大.容量大.肚量大!

JavaScript写一个拼图游戏

拼图游戏的代码400行, 有点多了, 在线DEMO的地址是:打开: 因为使用canvas,所以某些浏览器是不支持的: you know: 为什么要用canvas(⊙o⊙)?  因为图片是一整张jpg或者png, 我们要用把图片导入到canvas画布, 然后再调用上下文context的getImageData方法, 把图片处理成小图, 这些小图就作为拼图的基本单位: 如何判断游戏是否结束, 或者说如何判断用户拼成的大图是正确的? 我们就要在刚刚生成的小图上面添加自定义属性, 后期在小图被移动后再一

C语言写炸弹人小游戏

陆续改了半个月,不断更改游戏目的,结合了老鼠走迷宫和贪吃蛇游戏,终于在昨天凌晨2点写好了我的炸弹超人游戏.基于Windows图形界面,用C语言编写.虽然并不复杂,但收获颇多. 文件1:winapp.cpp,指导老师所给框架及自己写的主函数: #include <windows.h>LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;#include "winapp.h"#include "myfile.h&

C#WinFrom写的拼图游戏

1.窗口载入时自动生成拼图按钮 const int N = 4;//按钮的行.列数 Button[,] buttons = new Button[N, N];//按钮的数组 int step = 0;//记录步数 private void Form3_Load(object sender, EventArgs e) { //产生所有按钮 GenerateAllButtons(); } private void button1_Click(object sender, EventArgs e) {

C语言写扫雷小游戏2

这是下午写的,这次的修改增加了鼠标的事件,需要的是windows的消息机制,WinAPI函数,以下是新添加的定义 struct { int num;//格子当前状态,1表示有雷,0表示无雷或已经显示数字 int roundnum;//统计格子周围的雷数 int flag;//右键按下显示红旗标志,0表示没有,1表示有 }Mine[10][10]; POINT Mouse;//定义鼠标事件 int MouseX, MouseY;//鼠标的x,y坐标 int mineNUM;//统计处理过的格子数

用C语言写猜数字游戏

#include <stdio.h> #include <stdlib.h> #include <time.h> int main() {  int start=1;  while(start)  {   printf("请选择:\n");   printf("1:开始游戏\n");   printf("0:退出游戏\n");   scanf("%d",&start);   swit

C语言写扫雷小游戏1

用的ide是vs 2013,自己学习都是参考网上的代码,由于vs不带tc的graphics.h,所以下载easyx库,将include和lib复制到vc的目录. easyx的graphics.h和tc的还是有区别的,百科上的示例 使用上,基本和 Turbo C没太大区别.启动Visual C++,创建一个控制台项目(Win32 Console Application),然后引用 graphics.h 头文件就可以了.看一个画圆的例子: #include <graphics.h> // 就是需要

一个拼图游戏

闲着放松一下,试着看能不能用js写一个拼图游戏,就当是练习语法.以及对代码的管理. 下面是我写的时候的思路: 我的拼图是3*3的,在写的时候用ul>li作为容器. 下面是各个部分的结构思路: --1.将图片的url放在一个resource数组中 --2.用自己写的随机函数生成一个包含0-8的数字的数组,用来表示resource数组中图片的位置下标(每次load的时候数组都是变化的) --3.在load时,数组生成之后,把数组成员作为resource数组的下标给<img>的src赋值,(这