| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1123 人关注过本帖
标题:关于gotoxy(x,y)的用法
只看楼主 加入收藏
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:13 
关于gotoxy(x,y)的用法
gotoxy(x,y)也没有定义坐标啊,怎么就移动到(x,y)这个点?还有怎么控制每个元素之间的水平间距?
int main()
{
    int i,j;
    char d='$';
    srand(time(NULL));
    while(d != '#')
    {
        system("cls");//就是这一步!!!
        i = rand()%10;
        j = rand()%10;
        gotoxy(i,j);
        /*for(;i>0;i--)printf("\n");
        for(;j>0;j--)printf("  ");*/
        printf("%c",1);
        d = getch();
    }
}
2015-09-08 13:49
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
过期的技术  不研究也罢

DO IT YOURSELF !
2015-09-08 15:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
x,y就是坐标了

授人以渔,不授人以鱼。
2015-09-08 17:21
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 2楼 wp231957
那就是对于这种移动坐标的问题时有什么新的处理方法呢?求指教

从前风闻有你,现在我亲眼看见你
2015-09-08 22:06
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 3楼 TonyDeng
它输出来时候怎么来调节两个元素之间的水平距离呢?比如定义数组时,可以用printf("%-2d",a[i][j])来改变,可是这个怎么弄啊?

从前风闻有你,现在我亲眼看见你
2015-09-08 22:12
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:10 
回复 5楼 qq1625127317
敲空格不就调节了。
我原来实现gotoxy功能是调用windows.h里SetConsoleCursorPosition实现的,函数实现如下:
#include<windows.h>
void gotoxy(int x,int y)//设置字符显示位置
{
    HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
    COORD loc={x,y};
    SetConsoleCursorPosition(hOut,loc);
}

能编个毛线衣吗?
2015-09-08 22:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
以下是引用qq1625127317在2015-9-8 22:12:22的发言:

它输出来时候怎么来调节两个元素之间的水平距离呢?比如定义数组时,可以用printf("%-2d",a[j])来改变,可是这个怎么弄啊?

1.文本模式下坐标是整数值,间距祗能整数间距
2.坐标之差值就是间距

授人以渔,不授人以鱼。
2015-09-09 11:20
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 7楼 TonyDeng
哈哈,谢谢

从前风闻有你,现在我亲眼看见你
2015-09-09 12:28
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 6楼 wmf2014
谢谢哈,我再细细的瞧瞧哈

从前风闻有你,现在我亲眼看见你
2015-09-09 12:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
测试
你是用Win8.1的,试试下面的程序能不能运行:

Sample_01.zip (24.41 KB)

下载解压后运行即可,把结果告诉我。

该程序代码如下:
程序代码:
#include "stdafx.h"

using namespace System;

// 矩形範圍結構
struct Region
{
    Int32 Left;
    Int32 Top;
    Int32 Right;
    Int32 Bottom;
};

// 座標結構
struct Coord
{
    Int32 x;
    Int32 y;
};

const Int32 Rows = 50;            // 屏幕行數
const Int32 Columns = 160;        // 屏幕列數
const Char Face = L'';        // 顯示的圖符
const Char ClearFace = L' ';    // 

// 產生隨機座標
Coord RandomCoord(Region region)
{
    Random r;
    Coord pos = { r.Next(0, region.Right - region.Left), r.Next(0, region.Bottom - region.Top) };
    return pos;
}

int main(array<String^>^ args)
{
    const Region boxRegion = { 1, 1, Columns - 2, Rows - 2 };        // 圖案輸出範圍

    Console::SetWindowSize(Columns, Rows);
    Console::BackgroundColor = ConsoleColor::DarkBlue;
    Console::ForegroundColor = ConsoleColor::Yellow;
    Console::Clear();

    ConsoleKeyInfo key;
    do
    {
        static Coord pos = RandomCoord(boxRegion);
        Console::SetCursorPosition(boxRegion.Left + pos.x, boxRegion.Top + pos.y);
        Console::Write(Face);
        key = Console::ReadKey(true);
        Console::SetCursorPosition(boxRegion.Left + pos.x, boxRegion.Top + pos.y);
        Console::Write(ClearFace);
        switch (key.Key)
        {
            case ConsoleKey::LeftArrow:
                --pos.x;
                if (pos.x < 0)
                {
                    pos.x = boxRegion.Right - 2;
                }
                break;
            case ConsoleKey::RightArrow:
                ++pos.x;
                if (pos.x > boxRegion.Right - 2)
                {
                    pos.x = 0;
                }
                break;
            case ConsoleKey::UpArrow:
                --pos.y;
                if (pos.y < 0)
                {
                    pos.y = boxRegion.Bottom - 1;
                }
                break;
            case ConsoleKey::DownArrow:
                ++pos.y;
                if (pos.y > boxRegion.Bottom - 1)
                {
                    pos.y = 0;
                }
                break;
            default:
                break;
        }
    } while (key.Key != ConsoleKey::Escape);

    return 0;
}


[ 本帖最后由 TonyDeng 于 2015-9-10 14:52 编辑 ]

授人以渔,不授人以鱼。
2015-09-10 14:38
快速回复:关于gotoxy(x,y)的用法
数据加载中...
 
   



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

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