| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 673 人关注过本帖
标题:请高手指教定点坐标问题及自动移动
只看楼主 加入收藏
xiguapi123
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-7-6
结帖率:0
收藏
已结贴  问题点数:10 回复次数:3 
请高手指教定点坐标问题及自动移动
#include<stdio.h>
#include<stdlib.h>
#include <conio.h>    //包含getch()函数
#define n 20
int gotoxy(int,int);
struct zuobiao
{
      int x,y;
      int xv,yv;
      }man;
int main()
{
    int i;
gotoxy(man.x,man.y);
for(i=0;i<n;i++)
{
printf("\b ");
man.x+=man.xv;
man.y+=man.yv;
gotoxy(man.x,man.y);
printf("%c",1);
getch();
}
return 0;
}
int gotoxy(int x,int y)
{
    x=0;
    y=0;
    return(x,y);
}
我是一个初学者,我使用的是Dev c++,因为不能使用gotoxy定点,所以自己用函数进行了坐标定点,现在我有以下问题:
1、我这样定点对吗?有没有其它方法?(因为我觉得笑脸始终无法靠起点运行)
2、我改动坐标,但是笑脸为什么不会动?(及改动函数x和y的值,笑脸还是在原来的位置)
3、我想让笑脸自己移动(且可以自由上下移动,来回移动),还需要做哪方面改动?
望高手指点啊
搜索更多相关主题的帖子: 坐标 include return 
2012-07-06 08:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
这个做法是不行的,用printf()无法定点输出,你写的gotoxy(),是不能移动光标的,而且printf()也不会使用你设定的(x,y)值。

授人以渔,不授人以鱼。
2012-07-06 13:40
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:5 
如果你使用Dev C++,可以在最前面加两句:
#include <windows.h>
#include <assert.h>

然后把下面的代码加入到你的程序中,调用函数就可以实现你想要的功能了。

/**
 *  功能:   设置控制台光标位置
 *  参数:   x, y 光标位置
 *  返回值: int值,出错代码可用GetLastError()获取
 */
int console_gotoxy(int x, int y)
{
    COORD coord;
    coord.X = x;
    coord.Y = y;
    return SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

/**
 *  功能:   获取控制台当前光标位置
 *  参数:   x 坐标指针, y 坐标指标
 *  返回值: int值,出错代码可用GetLastError()获取
 */
int console_get_xy(int *x, int *y)
{
    CONSOLE_SCREEN_BUFFER_INFO csbInfo;
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    int result    = GetConsoleScreenBufferInfo(handle, &csbInfo);

    assert( handle != INVALID_HANDLE_VALUE );
    *x = csbInfo.dwCursorPosition.X;
    *y = csbInfo.dwCursorPosition.Y;
    return result;
}

/**
 *  功能:设置控制台文本色彩
 *  参数:fcolor -- 前景色(0~15),bcolor -- 背景色(0~7)
 *  返回:int值,出错代码可用GetLastError()获取
 */
int console_set_color(ushort fcolor, ushort bcolor)
{
    WORD txt_attrib;
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);

    assert( handle != INVALID_HANDLE_VALUE );
    txt_attrib = bcolor << 4 | fcolor;
    return SetConsoleTextAttribute(handle, txt_attrib);
}

[ 本帖最后由 hellovfp 于 2012-7-6 14:23 编辑 ]

我们都在路上。。。。。
2012-07-06 14:19
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
想要让笑脸自动移动,你可以做一个循环,比如说检测是否有按键,
没有按键的话,就把笑脸打印在不同的位置实现移动,然后使用Sleep(50)函数延迟就行了。

我们都在路上。。。。。
2012-07-06 14:26
快速回复:请高手指教定点坐标问题及自动移动
数据加载中...
 
   



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

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