(图书介绍:童晶:《C和C++游戏趣味编程》新书预告)
这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(《C和C++游戏趣味编程》配套教学视频)),布置了一次错觉图片生成实验的PBL,给了大家5天时间分组完成代码、ppt报告。
这次,介绍张昊翔、邹烨、谢欣然、蒋稷康同学实现的旋转花(spinning flower)。由于同学们学习C语言刚一个月,还没有正式学习数组、函数等语法知识,因此代码可能不够完善。以下提供了分步骤的实现思路、代码,大家可以参考。
首先是同学们调研的目标效果:
看起来三瓣花瓣在旋转,实际上组成花瓣的每个小球都只是在直线上运动。
1、画出一个小球,标记内圆与外圆
#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<math.h>
int main()
{
int width=500,height=500;
initgraph(width,height);//初始化画布
int radius1=20;
int radius2=220;
int centerx=250,centery=250;//关于两个标记圆的相关变量
//画出两个标记圆
setlinecolor(GREEN);
circle(centerx,centery,radius1);
circle(centerx,centery,radius2);
//实验,画出一个圆
int ball_radius=5;
int ballx=250,bally=230;
setfillcolor(RGB(255,0,0));//设置填充颜色
fillcircle(ballx,bally,ball_radius);
setlinecolor(RGB(255,0,0));
circle(ballx,bally,ball_radius);
_getch();
return 0;
}
2、赋予这一个小球运动,引入关于速度的变量
#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<math.h>
int main()
{
int width=500,height=500;
initgraph(width,height);//初始化画布
int radius1=20;
int radius2=220;
int centerx=250,centery=250;//关于两个标记圆的相关变量
//画出两个标记圆
setlinecolor(GREEN);
circle(centerx,centery,radius1);
circle(centerx,centery,radius2);
//实验,画出一个圆
int ball_radius=5;
int ballx=250,bally=230;
setfillcolor(RGB(255,0,0));//设置填充颜色
fillcircle(ballx,bally,ball_radius);
setlinecolor(RGB(255,0,0));
circle(ballx,bally,ball_radius);
//并赋予这个圆速度上的变化
float vx=0;
float vy=0;
float vy1;
float g=0.3;
double distance;