user-0 提问: 怎样用easyx使一个圆作随机运动

回复:
user: user-1
content: 引用 7 楼 u011583120 的回复:[quote=引用 6 楼 destory27 的回复:] #include <graphics.h> #include <stdio.h> #include <conio.h>  void q_move(int x, int y, int r) {  	for (; x + r/2 <= 640; x += 5) { 		setcolor(RED); 		circle(x, y, r); 		setfillcolor(RED); 		fillcircle(x, y, r); 		Sleep(10); 		setcolor(BLACK); 		circle(x, y, r); 		setfillcolor(BLACK); 		fillcircle(x, y, r);  	}   	return; }  void kb_cir_mov(void) { 	initgraph(640, 480);  	setcolor(RED); 	const int r = 20; 	int x = 320; 	int y = 240; 	circle(x, y, r); 	setfillcolor(RED); 	fillcircle(x, y, r); 	setlinestyle(PS_SOLID | PS_ENDCAP_SQUARE, 6); 	line(x, y + r, x, y + r + 20); 	line(x, y + r, x - 20, y + 35); 	line(x, y + r, x + 20, y + 35); 	line(x, y + r + 20, x - 20, y + 70); 	line(x, y + r + 20, x + 20, y + 70);  	char c = 0;  	while (c != 27) { 		if (kbhit()) { 			c = getch(); 			switch (c) { 				case 'w': { 					setcolor(BLACK); 					circle(x, y, r); 					setfillcolor(BLACK); 					fillcircle(x, y, r); 					setlinestyle(PS_SOLID | PS_ENDCAP_SQUARE, 6); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  					if (y - r <= 0) { 						setcolor(RED); 						circle(x, y, r); 						setfillcolor(RED); 						fillcircle(x, y, r); 						line(x, y + r, x, y + r + 20); 						line(x, y + r, x - 20, y + 35); 						line(x, y + r, x + 20, y + 35); 						line(x, y + r + 20, x - 20, y + 70); 						line(x, y + r + 20, x + 20, y + 70); 						break; 					} 					y -= 20; 					setcolor(RED); 					circle(x, y, r); 					setfillcolor(RED); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  				}break;  				case 's': { 					setcolor(BLACK); 					circle(x, y, r); 					setfillcolor(BLACK); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  					if (y + r + 70 >= 480) { 						setcolor(RED); 						circle(x, y, r); 						setfillcolor(RED); 						fillcircle(x, y, r); 						line(x, y + r, x, y + r + 20); 						line(x, y + r, x - 20, y + 35); 						line(x, y + r, x + 20, y + 35); 						line(x, y + r + 20, x - 20, y + 70); 						line(x, y + r + 20, x + 20, y + 70); 						break; 					} 					y += 20; 					setcolor(RED); 					circle(x, y, r); 					setfillcolor(RED); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  				}break; 				case 'a': { 					setcolor(BLACK); 					circle(x, y, r); 					setfillcolor(BLACK); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  					if (x - 35 <= 0) { 						setcolor(RED); 						circle(x, y, r); 						setfillcolor(RED); 						fillcircle(x, y, r); 						line(x, y + r, x, y + r + 20); 						line(x, y + r, x - 20, y + 35); 						line(x, y + r, x + 20, y + 35); 						line(x, y + r + 20, x - 20, y + 70); 						line(x, y + r + 20, x + 20, y + 70); 						break; 					} 					x -= 20; 					setcolor(RED); 					circle(x, y, r); 					setfillcolor(RED); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70); 				}break;  				case 'd': { 					setcolor(BLACK); 					circle(x, y, r); 					setfillcolor(BLACK); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  					if (x + 35 >= 640){ 						setcolor(RED); 						circle(x, y, r); 						setfillcolor(RED); 						fillcircle(x, y, r); 						line(x, y + r, x, y + r + 20); 						line(x, y + r, x - 20, y + 35); 						line(x, y + r, x + 20, y + 35); 						line(x, y + r + 20, x - 20, y + 70); 						line(x, y + r + 20, x + 20, y + 70); 						break; 					 					} 					x += 20; 					setcolor(RED); 					circle(x, y, r); 					setfillcolor(RED); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70); 				}break;  				case 'q': { 					/*	 					circle(x + 23, y, 5); 					setfillcolor(RED); 					fillcircle(x + 23, y, 5); 					*/ 					q_move(x + 28, y, 5);  				}break;   				default:continue; 					 			} 		}  	}  	closegraph();   	return; }  int main(void) { 	kb_cir_mov();  	return 0; } 值得学习[/quote]   结贴吧

user: user-0
content: 引用 6 楼 destory27 的回复:#include <graphics.h> #include <stdio.h> #include <conio.h>  void q_move(int x, int y, int r) {  	for (; x + r/2 <= 640; x += 5) { 		setcolor(RED); 		circle(x, y, r); 		setfillcolor(RED); 		fillcircle(x, y, r); 		Sleep(10); 		setcolor(BLACK); 		circle(x, y, r); 		setfillcolor(BLACK); 		fillcircle(x, y, r);  	}   	return; }  void kb_cir_mov(void) { 	initgraph(640, 480);  	setcolor(RED); 	const int r = 20; 	int x = 320; 	int y = 240; 	circle(x, y, r); 	setfillcolor(RED); 	fillcircle(x, y, r); 	setlinestyle(PS_SOLID | PS_ENDCAP_SQUARE, 6); 	line(x, y + r, x, y + r + 20); 	line(x, y + r, x - 20, y + 35); 	line(x, y + r, x + 20, y + 35); 	line(x, y + r + 20, x - 20, y + 70); 	line(x, y + r + 20, x + 20, y + 70);  	char c = 0;  	while (c != 27) { 		if (kbhit()) { 			c = getch(); 			switch (c) { 				case 'w': { 					setcolor(BLACK); 					circle(x, y, r); 					setfillcolor(BLACK); 					fillcircle(x, y, r); 					setlinestyle(PS_SOLID | PS_ENDCAP_SQUARE, 6); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  					if (y - r <= 0) { 						setcolor(RED); 						circle(x, y, r); 						setfillcolor(RED); 						fillcircle(x, y, r); 						line(x, y + r, x, y + r + 20); 						line(x, y + r, x - 20, y + 35); 						line(x, y + r, x + 20, y + 35); 						line(x, y + r + 20, x - 20, y + 70); 						line(x, y + r + 20, x + 20, y + 70); 						break; 					} 					y -= 20; 					setcolor(RED); 					circle(x, y, r); 					setfillcolor(RED); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  				}break;  				case 's': { 					setcolor(BLACK); 					circle(x, y, r); 					setfillcolor(BLACK); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  					if (y + r + 70 >= 480) { 						setcolor(RED); 						circle(x, y, r); 						setfillcolor(RED); 						fillcircle(x, y, r); 						line(x, y + r, x, y + r + 20); 						line(x, y + r, x - 20, y + 35); 						line(x, y + r, x + 20, y + 35); 						line(x, y + r + 20, x - 20, y + 70); 						line(x, y + r + 20, x + 20, y + 70); 						break; 					} 					y += 20; 					setcolor(RED); 					circle(x, y, r); 					setfillcolor(RED); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  				}break; 				case 'a': { 					setcolor(BLACK); 					circle(x, y, r); 					setfillcolor(BLACK); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  					if (x - 35 <= 0) { 						setcolor(RED); 						circle(x, y, r); 						setfillcolor(RED); 						fillcircle(x, y, r); 						line(x, y + r, x, y + r + 20); 						line(x, y + r, x - 20, y + 35); 						line(x, y + r, x + 20, y + 35); 						line(x, y + r + 20, x - 20, y + 70); 						line(x, y + r + 20, x + 20, y + 70); 						break; 					} 					x -= 20; 					setcolor(RED); 					circle(x, y, r); 					setfillcolor(RED); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70); 				}break;  				case 'd': { 					setcolor(BLACK); 					circle(x, y, r); 					setfillcolor(BLACK); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  					if (x + 35 >= 640){ 						setcolor(RED); 						circle(x, y, r); 						setfillcolor(RED); 						fillcircle(x, y, r); 						line(x, y + r, x, y + r + 20); 						line(x, y + r, x - 20, y + 35); 						line(x, y + r, x + 20, y + 35); 						line(x, y + r + 20, x - 20, y + 70); 						line(x, y + r + 20, x + 20, y + 70); 						break; 					 					} 					x += 20; 					setcolor(RED); 					circle(x, y, r); 					setfillcolor(RED); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70); 				}break;  				case 'q': { 					/*	 					circle(x + 23, y, 5); 					setfillcolor(RED); 					fillcircle(x + 23, y, 5); 					*/ 					q_move(x + 28, y, 5);  				}break;   				default:continue; 					 			} 		}  	}  	closegraph();   	return; }  int main(void) { 	kb_cir_mov();  	return 0; } 值得学习

user: user-1
content: #include <graphics.h> #include <stdio.h> #include <conio.h>  void q_move(int x, int y, int r) {  	for (; x + r/2 <= 640; x += 5) { 		setcolor(RED); 		circle(x, y, r); 		setfillcolor(RED); 		fillcircle(x, y, r); 		Sleep(10); 		setcolor(BLACK); 		circle(x, y, r); 		setfillcolor(BLACK); 		fillcircle(x, y, r);  	}   	return; }  void kb_cir_mov(void) { 	initgraph(640, 480);  	setcolor(RED); 	const int r = 20; 	int x = 320; 	int y = 240; 	circle(x, y, r); 	setfillcolor(RED); 	fillcircle(x, y, r); 	setlinestyle(PS_SOLID | PS_ENDCAP_SQUARE, 6); 	line(x, y + r, x, y + r + 20); 	line(x, y + r, x - 20, y + 35); 	line(x, y + r, x + 20, y + 35); 	line(x, y + r + 20, x - 20, y + 70); 	line(x, y + r + 20, x + 20, y + 70);  	char c = 0;  	while (c != 27) { 		if (kbhit()) { 			c = getch(); 			switch (c) { 				case 'w': { 					setcolor(BLACK); 					circle(x, y, r); 					setfillcolor(BLACK); 					fillcircle(x, y, r); 					setlinestyle(PS_SOLID | PS_ENDCAP_SQUARE, 6); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  					if (y - r <= 0) { 						setcolor(RED); 						circle(x, y, r); 						setfillcolor(RED); 						fillcircle(x, y, r); 						line(x, y + r, x, y + r + 20); 						line(x, y + r, x - 20, y + 35); 						line(x, y + r, x + 20, y + 35); 						line(x, y + r + 20, x - 20, y + 70); 						line(x, y + r + 20, x + 20, y + 70); 						break; 					} 					y -= 20; 					setcolor(RED); 					circle(x, y, r); 					setfillcolor(RED); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  				}break;  				case 's': { 					setcolor(BLACK); 					circle(x, y, r); 					setfillcolor(BLACK); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  					if (y + r + 70 >= 480) { 						setcolor(RED); 						circle(x, y, r); 						setfillcolor(RED); 						fillcircle(x, y, r); 						line(x, y + r, x, y + r + 20); 						line(x, y + r, x - 20, y + 35); 						line(x, y + r, x + 20, y + 35); 						line(x, y + r + 20, x - 20, y + 70); 						line(x, y + r + 20, x + 20, y + 70); 						break; 					} 					y += 20; 					setcolor(RED); 					circle(x, y, r); 					setfillcolor(RED); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  				}break; 				case 'a': { 					setcolor(BLACK); 					circle(x, y, r); 					setfillcolor(BLACK); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  					if (x - 35 <= 0) { 						setcolor(RED); 						circle(x, y, r); 						setfillcolor(RED); 						fillcircle(x, y, r); 						line(x, y + r, x, y + r + 20); 						line(x, y + r, x - 20, y + 35); 						line(x, y + r, x + 20, y + 35); 						line(x, y + r + 20, x - 20, y + 70); 						line(x, y + r + 20, x + 20, y + 70); 						break; 					} 					x -= 20; 					setcolor(RED); 					circle(x, y, r); 					setfillcolor(RED); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70); 				}break;  				case 'd': { 					setcolor(BLACK); 					circle(x, y, r); 					setfillcolor(BLACK); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70);  					if (x + 35 >= 640){ 						setcolor(RED); 						circle(x, y, r); 						setfillcolor(RED); 						fillcircle(x, y, r); 						line(x, y + r, x, y + r + 20); 						line(x, y + r, x - 20, y + 35); 						line(x, y + r, x + 20, y + 35); 						line(x, y + r + 20, x - 20, y + 70); 						line(x, y + r + 20, x + 20, y + 70); 						break; 					 					} 					x += 20; 					setcolor(RED); 					circle(x, y, r); 					setfillcolor(RED); 					fillcircle(x, y, r); 					line(x, y + r, x, y + r + 20); 					line(x, y + r, x - 20, y + 35); 					line(x, y + r, x + 20, y + 35); 					line(x, y + r + 20, x - 20, y + 70); 					line(x, y + r + 20, x + 20, y + 70); 				}break;  				case 'q': { 					/*	 					circle(x + 23, y, 5); 					setfillcolor(RED); 					fillcircle(x + 23, y, 5); 					*/ 					q_move(x + 28, y, 5);  				}break;   				default:continue; 					 			} 		}  	}  	closegraph();   	return; }  int main(void) { 	kb_cir_mov();  	return 0; }

user: user-2
content: 圆心坐标x，y，程序循环中每次产生随机数dx，dy（正负对称分布），新的圆心坐标为x+dx，y+dy，超出边界的时候处理一下，比如超过的部分减（反弹）回来。

user: user-3
content: 百度搜相关关键字。

user: user-0
content: 现在这个圆的运动是有规律的，请大佬指点一下。

user: user-0
content: 目前这代码只能展示一个圆。