当前位置: 代码迷 >> C语言 >> 在屏幕上画个汽车,怎么让他跑起来?只需要他向前走就可以了?
  详细解决方案

在屏幕上画个汽车,怎么让他跑起来?只需要他向前走就可以了?

热度:149   发布时间:2007-07-04 16:37:32.0
在屏幕上画个汽车,怎么让他跑起来?只需要他向前走就可以了?
在屏幕上画个汽车,怎么让他跑起来?只需要他向前走就可以了?
请告知我一个思想,也不需要完全的代码。当然有更好啦。谢谢
搜索更多相关的解决方案: 屏幕  汽车  

----------------解决方案--------------------------------------------------------

不断搽掉,然后再新的位置画


----------------解决方案--------------------------------------------------------
还是不懂啊!我是菜鸟
----------------解决方案--------------------------------------------------------

你说的是控制台程序吗?


----------------解决方案--------------------------------------------------------
假如汽车麻烦的话,字母也可以啊,怎么让他横向跑起来?应该要个定时器吧
----------------解决方案--------------------------------------------------------
用定时器改变物体的坐标, 然后不断刷新.
----------------解决方案--------------------------------------------------------
while(1)
{
system(cls);
for(i=0;i<=10;i++)
{
print(" ");
}
printf("A");
sleep(5);
}

----------------解决方案--------------------------------------------------------
修改下:
j=0;
while(1)
{
system(cls);
for(i=0;i<=j;i++)
{
print(" ");
}
printf("A");
sleep(5);
j++;
}

----------------解决方案--------------------------------------------------------
C中的time.h来实现定时器,不过不会用,所以一般都是用循环来代替。处理方法如上
----------------解决方案--------------------------------------------------------
回复:(windflush)C中的time.h来实现定时器,不过...

在TC下:
用biostime函数实现
int boxtime(int stime)
{
tnew=biostime(0,tnew);
if(abs(tnew-told)>=stime)
{
told=tnew;
return 1;
}

return 0;
}

在VC下就麻烦了
正好刚看到教程里的程序:
#include <windows.h>

#define ID_TIMER 1

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

static TCHAR szAppName[] = TEXT ("Beeper1") ;

HWND hwnd ;

MSG msg ;

WNDCLASS wndclass ;



wndclass.style = CS_HREDRAW | CS_VREDRAW ;

wndclass.lpfnWndProc = WndProc ;

wndclass.cbClsExtra = 0 ;

wndclass.cbWndExtra = 0 ;

wndclass.hInstance = hInstance ;

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;

wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;

wndclass.lpszMenuName = NULL ;

wndclass.lpszClassName = szAppName ;



if (!RegisterClass (&wndclass))

{

MessageBox ( NULL, TEXT ("Program requires Windows NT!"),

szAppName, MB_ICONERROR) ;

return 0 ;

}



hwnd = CreateWindow (szAppName, TEXT ("Beeper1 Timer Demo"),

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, CW_USEDEFAULT,

CW_USEDEFAULT, CW_USEDEFAULT,

NULL, NULL, hInstance, NULL) ;



ShowWindow (hwnd, iCmdShow) ;

UpdateWindow (hwnd) ;

while (GetMessage (&msg, NULL, 0, 0))

{

TranslateMessage (&msg) ;

DispatchMessage (&msg) ;

}

return msg.wParam ;

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)

{

static BOOL fFlipFlop = FALSE ;

HBRUSH hBrush ;

HDC hdc ;

PAINTSTRUCT ps ;

RECT rc ;



switch (message)

{

case WM_CREATE:

SetTimer (hwnd, ID_TIMER, 1000, NULL) ;

return 0 ;

case WM_TIMER :

MessageBeep (-1) ;

fFlipFlop = !fFlipFlop ;

InvalidateRect (hwnd, NULL, FALSE) ;

return 0 ;



case WM_PAINT :

hdc = BeginPaint (hwnd, &ps) ;



GetClientRect (hwnd, &rc) ;

hBrush = CreateSolidBrush (fFlipFlop ? RGB(255,0,0) : RGB(0,0,255)) ;

FillRect (hdc, &rc, hBrush) ;

EndPaint (hwnd, &ps) ;

DeleteObject (hBrush) ;

return 0 ;



case WM_DESTROY :

KillTimer (hwnd, ID_TIMER) ;

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam) ;

}


----------------解决方案--------------------------------------------------------
  相关解决方案