| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1256 人关注过本帖, 1 人收藏
标题:[原创]碰撞演示
取消只看楼主 加入收藏
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏(1)
 问题点数:0 回复次数:2 
[原创]碰撞演示

大家好,好久没来了,学校有点事情,浪费了我差不多半个假期,前天刚回来,练练手,代码可能有点罗嗦吧。我正在研究bitblt()函数的原理,我想用c实现,顺便请教各位高手。 /* Hit.cpp */ #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <dos.h> #include <bios.h> #include <graphics.h>

#define SCREEN_HEIGHT 480 #define SCREEN_WIDTH 640

static int dx=1,dy=1; static unsigned int r=20; static unsigned int cx=0,cy=0;

unsigned int randrange(int start,int end) { randomize(); unsigned int ret=start+rand() % (end-start) + 1; return ret; }

void igdrv(void) { int gdriver = DETECT, gmode, errorcode; initgraph(&gdriver, &gmode, ""); errorcode = graphresult(); if (errorcode != grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* return with error code */ } }

void draw_border(void) { setcolor(WHITE); line(0,0,SCREEN_WIDTH-1,0); line(0,0,0,SCREEN_HEIGHT-1); line(0,SCREEN_HEIGHT-1,SCREEN_WIDTH-1,SCREEN_HEIGHT-1); line(SCREEN_WIDTH-1,0,SCREEN_WIDTH-1,SCREEN_HEIGHT-1); }

void draw_ball(void) { cx=randrange(r+1,SCREEN_WIDTH-2-r); cy=randrange(r+1,SCREEN_HEIGHT-2-r); setcolor(WHITE); circle(cx,cy,r); }

void direction(void) { randomize(); dx = (rand() % 100+1) < 50 ? dx : -dx; dy = (rand() % 100+1) < 50 ? dy : -dy; }

void reflect(void) { if(cx==r+1||cx==SCREEN_WIDTH-r-2) dx=-dx; if(cy==r+1||cy==SCREEN_HEIGHT-r-2) dy=-dy; }

int main() { int flag=1,key; igdrv(); // draw the border draw_border(); // first time , draw the ball draw_ball(); // random a direction of action direction(); do { do { delay(2); if(flag) { setcolor(BLACK); circle(cx,cy,r); cx+=dx; cy+=dy; setcolor(WHITE); circle(cx,cy,r);

if((cx==r+1||cx==SCREEN_WIDTH-r-2)||(cy==r+1||cy==SCREEN_HEIGHT-r-2)) { flag=0; } } else { reflect(); flag=1; } } while(!bioskey(1)); // Press esc to exit the program. } while((key=bioskey(0))!=0x11b);

closegraph(); return 0; }

搜索更多相关主题的帖子: 演示 
2005-08-18 21:34
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
TC2.0下编译的话,把//...注释行改成/*...*/注释行

我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2005-08-18 22:13
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
谢谢各位,的确是好提议,我有空试着做一下。。

我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2005-08-20 00:32
快速回复:[原创]碰撞演示
数据加载中...
 
   



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

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