注册 登录
编程论坛 C图形专区

SPACE的问题.

无语的我 发布于 2007-05-04 19:58, 755 次点击

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
#define SPACE 0x39


struct
{
int x;
int y;
}face;


void initgr(void)
{
int gd = DETECT, gm = 0;
initgraph(&gd, &gm, "");
}
void Draw();
void play();
void Drawgun(int x,int y);
int main(void)
{
initgr();
play();
closegraph();
getch();
return 0;
}

void Draw()
{
int i;
setcolor(11);
/* setlinestyle(SOLID_LINE,0,THICK_WIDTH);*/
for(i=50;i<=600;i+=10)
{
rectangle(i,40,i+10,49);
rectangle(i,451,i+10,460);
}
for(i=40;i<=450;i+=10)
{
rectangle(50,i,59,i+10);
rectangle(601,i,610,i+10);
}
}

void play()
{
int key;
face.x=450;
face.y=200;
cleardevice();
setcolor(GREEN);
circle(face.x,face.y,15);
Draw();
while(1)
{
key=bioskey(0);
setcolor(BLACK);
switch(key)
{
case LEFT: circle(face.x,face.y,15);
face.x-=5;
if(face.x<79)
face.x+=5;
break;
case RIGHT: circle(face.x,face.y,15);
face.x+=5;
if(face.x>583)
face.x-=5;
break;
case DOWN: circle(face.x,face.y,15);
face.y+=5;
if(face.y>433)
face.y-=5;
break;
case UP: circle(face.x,face.y,15);
face.y-=5;
if(face.y<67)
face.y+=5;
break;
case SPACE: Drawgun(face.x,face.y);
break;
case ESC: exit(0);
}
setcolor(GREEN);
circle(face.x,face.y,15);
}
}

void Drawgun(int x,int y)
{
int i;
setcolor(RED);
for(i=0;i<200;i++)
{
circle(x+i,y,3);
setcolor(BLACK);
delay(10000);

circle(x+i,y,3);
setcolor(RED);
}

}
好像执行不了Drawgun()这个函数.刚接触图形这方面的.
哪个大哥帮下啊.

5 回复
#2
奔跑的鸟2007-05-04 21:46
你不用结构试试看,设个全局变量的x,y。
你的程序里根本就没调用drawgun()函数,不知道是不是结构成员传递问题
#3
无语的我2007-05-05 11:07

现在的问题是.执行不了那个case SPACE:这个语句.

#4
奔跑的鸟2007-05-05 11:18
我试了下,已确认,是你space编码不对,你可以改成0x1e61,然后按a注意是小写的,就可以了
#5
无语的我2007-05-05 17:55
谢谢.
#6
奔跑的鸟2007-05-05 19:02
8客气,你想做游戏的话,建议你的drawgun函数那种循环不要,放在play()函数里的while循环里,否则子弹动的时候其他东西都不能动的
1