PDA

View Full Version : اشکال در قطعه کد



slayermind
چهارشنبه 01 خرداد 1387, 08:53 صبح
مشكل اين كه در كد زير كليد چپ و بالا باعث حركت نميشه چيه؟
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<stdlib.h>
#include<stdio.h>
int main()
{
int xmin=169,xmax=569,ymin=39,ymax=439,i;
int x1=319,y1=189,x2=369,y2=239;
unsigned char ch;
int gdriver = DETECT, gmode, errorcode;
int left, top, right, bottom;
initgraph(&gdriver, &gmode, "d:\\bc\\bgi");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
rectangle(x1,y1,x2,y2);
while((ch=getch())!=27)
if(!ch)
{
ch=getch();
clrscr();
switch(ch)
{
case 0x4b:
{
x1=x1-50;
x2=x2-50;
}
if((x1<xmin)||(x2<xmin))
{
x1=319;
x2=369;
break;
}
case 0x4d:
{
x1+=50;
x2+=50;
}
if((x1>xmax)||(x2>xmax))
{
x1=319;
x2=369;
break;
}
case 0x48:
{
y1=y1-50;
y2=y2-50;
}
if((y1<ymin)||(y2<ymin))
{
y1=189;
y2=239;

break;
}
case 0x50:
{
y1+=50;
y2+=50;
}
if((y1>ymax)||(y2>ymax))
{
y1=189;
y2=239;
break;
}
rectangle(x1,y1,x2,y2);
}
}

getch();
closegraph();
return 0;
}

sasan_vm
چهارشنبه 01 خرداد 1387, 15:58 عصر
مسلما مشکل در کدی هست که برای کلید در نظر گرفتی، کلیدهای مانند Left, Top, ... دو بایتی هستند
بایت اول صفر و بایت دوم با یکی از کدهای Ascii نشان داده می شود. این کد باید مشکلت را حل کنه:


#include <stdio.h>
#include <conio.h>
int ReadKey()
{
int Code;
while ( !kbhit() );
Code = getch();
if (Code == 0)
Code = getch();
return Code;
}
main()
{
char ch;
printf("\nEsc for exit:\n");
do
{
ch = ReadKey();
printf("\nChar: %3c\tCode: %3d\t0x%-3x", ch, ch, ch);
}
while (ch != 27);
}

slayermind
چهارشنبه 01 خرداد 1387, 16:25 عصر
كد پايين و راست درست كار ميكنه نه كدهايي كه نوشتم دقت كنيد صفر تو خودش داره