| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1889 人关注过本帖
标题:求助一个问题 关于方向键操纵的
只看楼主 加入收藏
fpyyyy
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-1-11
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
求助一个问题 关于方向键操纵的
想要使目标人物用方向键左右移动 检查没有问题 但是小人仍旧没法使用方向键 btw 还有一个问题怎么使小人初始位置设定到
(100,750)x_position y_position.

#include <graphics_lib.h>
#include <stdio.h>
#include <conio.h>

int x_position, y_position,x,y;
int main(void)
{
    /* Declare two variables for the x and y positions */


   /* Limit the range of the move of the stick man */
   if (x_position>1400)
   (x_position=1400);

   if(x_position<80)
   (x_position=80);

   if(y_position>800)
    (y_position=800);

   if(y_position<50)
    (y_position=50);



/* Open a graphics window */
/* Make it 640 pixels wide by 480 pixels high */
initwindow(1500, 1000);



   Kamen_Rider_cyclone();

   int key_press;
   do
   {
    key_press=getch();
    if(key_press==75)
    Kamen_Rider_cyclone(x_position-=5, y_position);
    else if(key_press==77)
    Kamen_Rider_cyclone(x_position+=5, y_position);
    else
    Kamen_Rider_cyclone(x, y_position);
    }
    while
    (getch()!=13);
    update_display();










    /* move the contents of the screen buffer to the display */
    update_display();

/* Wait for a key press */
    getch();



    /* remove the display */
    closegraph();


    return 0;
}

void Kamen_Rider_cyclone()

{
      x_position=x;
      y_position=y;

     /* draw a circle on the screen buffer
     at x_position, y_position
     with radius 10 and line thickness 2 */
       /* choose green pen colour */
setcolor(GREEN);

    /* draw a circle on the screen buffer
     at x_position, y_position
     with radius 10 and line thickness 2 */
     filled_rectangle(0,0,1500,1000,BLACK);

    circle(x_position, y_position, 1, 100);
    line(x_position, y_position+25, x_position, y_position+125,7);
    line(x_position -50, y_position +80, x_position +50, y_position +80,6);
    line(x_position, y_position +125, x_position +50, y_position +200,6);
    line(x_position, y_position +125, x_position -50, y_position +200,6);

    setcolor(WHITE);
    line(x_position -75, y_position -50, x_position -15, y_position -10,5);
    line(x_position -15, y_position -10, x_position, y_position -30,5);
    line(x_position +13, y_position -10, x_position, y_position -30,5);
    line(x_position +75, y_position -50, x_position +15, y_position -10,5);
    line(x_position, y_position -55, x_position, y_position +50,5);



     /* choose red pen colour */
    setcolor(RED);
circle(x_position -20, y_position +5, 7, 17);
circle(x_position +20, y_position +5, 7, 17);
    line(0, 1000,2000, 1000,100);

 /* choose black pen colour */
setcolor(BLACK);
circle(x_position -20, y_position +5, 15, 2);
circle(x_position +20, y_position +5, 15, 2);
line(x_position, y_position -55, x_position, y_position +50,1);


    update_display();






}
搜索更多相关主题的帖子: include 左右 
2016-01-11 09:31
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:10 
看你代码里没有关于btw键的处理,仅只有键'k'和'm'以及回车键的处理。
可能是老版本代码,无法验证。

能编个毛线衣吗?
2016-01-11 10:00
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
tc/bc,不管用什麽,對方向鍵這樣的按鍵,是用兩次getch()才接收得到。

授人以渔,不授人以鱼。
2016-01-11 12:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
鍵盤的掃描碼全長是16位整數,不是一個char可以容納的。除了方向鍵,還有各種控制組合鍵,也都是16位整數碼,用getch()必須調用兩次:第一次檢測看是不是0xe0,若是,則馬上再getch()一次,這次才是該鍵的碼値;若否,則第一次的是碼値。實際上,除了看碼値,還要看Alt/Ctrl/Shift的狀態。

檢測鍵盤按鍵,與硬件和系統有關,有些多功能鍵盤,有獨特的鍵位和鍵値。這種與硬件底層有關的編程,沒有可移植性——但你僅用ISO編程卻沒有辦法寫這類程序。別對可移植性和跨平臺抱不切實際的幻想,現實沒有那麽簡單。我的意思是説,針對你的應用環境編程,不用過於考慮所謂的規範和標準,知道自己程序中哪些部位有可移植性問題就可以了,到了真要移植,就針對性地改(把有可能要改動的地方封裝爲函數和模塊,接口不變,學會設計模式比單純學語法和技術要有用得多)。

[此贴子已经被作者于2016-1-11 13:00编辑过]


授人以渔,不授人以鱼。
2016-01-11 12:47
快速回复:求助一个问题 关于方向键操纵的
数据加载中...
 
   



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

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