| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2500 人关注过本帖, 1 人收藏
标题:求大神十五字游戏代码拜托了
只看楼主 加入收藏
aaaa饭凡
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-6-3
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:16 
求大神十五字游戏代码拜托了
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 游戏 
2017-06-03 10:24
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:7 
拼图游戏么~可以自己先完成初始化部分~

PS:以前曾经用Easyx图形库写了个拼图~不过写得很粗糙~不过用CMD加system("cls");这样更粗糙了~不过感觉可以改进一下不用system("cls");windows.h里面有调整光标位置语句~还可以调整背景颜色~不过我还是当回键盘侠算啦~最近没这么多精力去逐一完善~

[此贴子已经被作者于2017-6-3 11:16编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-06-03 10:47
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
随机摆放的拼图不一定能还原成功~如果在成功的前提下交换相邻的两块就走不通了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-06-03 11:18
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:7 
应该不难吧。
关于问题4,任意随机的图不知道能否还原,但通过程序控制的随机图应该是可以还原的。
现在开始构思,应该晚饭前可以提交,不过我肯定不会按照你题目要求来。我不会帮你做作业的,我只是对游戏感兴趣。
2017-06-03 13:46
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
已经可以玩了,但没有做“you win”的判断。
效果图:
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
#include "stdafx.h"                  //在vs、vc中可用,gcc编译器可注释掉
#include <stdio.h>        
#include <windows.h>      
#include <time.h>         
#include <conio.h>

void setLocate(int x,int y) 
{//设置字符显示位置
    HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
    COORD loc={x,y};
    SetConsoleCursorPosition(hOut,loc);
}
void drawframe()
{//画外框
    int i;
    printf("┌─┬─┬─┬─┐   空格键:产生随机地图   ESC键:退出   方向键:移动空格\n");
    for(i=0;i<3;i++)
    {
        printf("│  │  │  │  │\n");
        printf("├─┼─┼─┼─┤\n");
    }
    printf("│  │  │  │  │\n");
    printf("└─┴─┴─┴─┘\n");
}
int testmove(int a[][4],int flg)
{//测试移动是否合法,合法则交换数据
    int i,j,x,y,b[4][2]={-1,0,0,-1,0,1,1,0};
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)
        {
            if(!a[i][j])
            {
                x=i;
                y=j;
            }
        }
    }
    i=x+b[flg][0];
    j=y+b[flg][1];
    if(i<0||i>3||j<0||j>3)return 0;
    a[i][j]^=a[x][y];
    a[x][y]^=a[i][j];
    a[i][j]^=a[x][y];
    return 1;
}

int getkey()
{//获得键值
    unsigned char a;
    int n=0;
    if(!kbhit())return 0;
    a=getch();
    if(a>127)
    {
        n=a*256;
        a=getch();
    }
    n=n+a;
    return n;
}
void rndmap(int a[][4])
{//随机地图产生
    int i,j;
    srand(clock());
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            a[i][j]=i*4+j+1;
    a[3][3]=0;
    for(i=0;i<128;i+=testmove(a,rand()%4));  //为减少代码,该语句有死循环的危险
}
void listmap(int a[][4])
{
    int i,j,x,y;
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)
        {
            setLocate(j*4+2,i*2+1);
            if(a[i][j])printf("%2d",a[i][j]);
            else
            {
                x=j*4+2;
                y=i*2+1;
                printf("  ");
            }
        }
    }
    setLocate(x,y);
}

void main()
{
    int a[4][4],key,i;
    drawframe();
    rndmap(a);
    listmap(a);
    while((key=getkey())!=27)
    {
        if(key==32||(key>57415&&key<57425))
        {
            if(key==32)rndmap(a);
            else
            {
                i=(key-57416)/3+(key>57419);
                testmove(a,i);
            }
            listmap(a);
        }
    }
}
2017-06-03 16:03
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 5楼 xzlxzlxzl
X版主就厉害~
就喜欢看X版的代码了~简短精炼~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-06-03 16:13
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 6楼 九转星河
    while((key=getkey())!=27)
    {
        if(key==32||(key>57415&&key<57425))
        {
            if(key==32)rndmap(a);
            else
            {
                i=(key-57416)/3+(key>57419);
                testmove(a,i);
            }
            listmap(a);
        }
    }

这些键值是什么意思?~X版能讲解下么?~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-06-03 16:20
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 7楼 九转星河
不过现在看得有点懂了~就是要把四个方向的值转换成0 1 2 3然后通过数组b索引运算~学习了~

不过就是好奇四个方向键的ASCII码是怎么来的~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-06-03 17:29
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
回复 8楼 九转星河
百度“c如何获取方向键键值”就知道了,方向键等特殊键会getch到两个值,第一个值固定为-32,就是无符号数242,紧接得到的值就区分哪个键了,把这两个值当做一个int数的2后两个字节就得到四个方向键的键值了。
这个游戏还挺有意思的,我已经能很轻松玩通了,就是要为了达到目标转啊转的,下一步准备把显示最小步数和游戏用时的功能加上,如果兴趣还没消退的话把复盘(通关步数重演)的功能也写了。
游戏攻略:https://wenku.baidu.com/view/a8c4fad533d4b14e85246856.html
2017-06-03 19:00
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 9楼 xzlxzlxzl
最小步数涉及到A*算法~加油啊~期待你的杰作~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-06-03 19:15
快速回复:求大神十五字游戏代码拜托了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020003 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved