C语言课程设计报告烟花绽放

合集下载

《C语言课程设计》报告模板

《C语言课程设计》报告模板

文华学院
C语言课程设计报告题目:
学生姓名:学号:
学部(系):
专业年级:
指导教师:
2016年3月
(题目)
1. 概述
(对题目要实现的功能做介绍)
2. 设计任务分析
(分析问题,用什么方法解决,关键解法和技术;用什么数据存储方式如数组还是链表等)
3. 系统总框图
(通过画图展示整个程序的功能结构,代码模块划分等,请参见范例)
4. 功能模块描述
(分小点阐述各个代码模块的功能和实现技术,比如主函数,各个子函数的实现方法等)
5. 源程序
(列出完整源程序,用注释方法加以注释)
6. 运行测试及调试
(适当抓3-5图片,演示程序的运行结果或调试过程)
7. 结语
(总结编写代码、调试过程中的经验教训;遇到的错误及解决办法;感想等)。

C语言课程设计烟花

C语言课程设计烟花

C语言课程设计烟花一、教学目标通过本章节的学习,使学生掌握C语言编程中烟花效果的实现,理解相关算法和编程技巧,培养学生独立思考和解决问题的能力。

1.了解烟花效果的基本原理和实现方法。

2.掌握C语言中相关数据结构和算法。

3.熟悉编译环境和调试技巧。

4.能够运用C语言编写简单的烟花效果程序。

5.能够独立分析和解决编程过程中遇到的问题。

6.能够合理和运用所学知识,进行创新性编程。

情感态度价值观目标:1.培养学生对计算机科学的兴趣和热情。

2.培养学生勇于探索和创新的精神。

3.培养学生团队协作和交流的能力。

二、教学内容本章节以C语言编程中烟花效果的实现为主线,教学内容主要包括以下几个方面:1.烟花效果的基本原理和实现方法。

2.C语言中相关数据结构和算法的学习。

3.编译环境和调试技巧的介绍。

4.烟花效果程序的编写和优化。

5.第一天:介绍烟花效果的基本原理和实现方法。

6.第二天:学习C语言中相关数据结构和算法。

7.第三天:介绍编译环境和调试技巧。

8.第四天:编写和优化烟花效果程序。

三、教学方法为了提高学生的学习兴趣和主动性,本章节将采用以下教学方法:1.讲授法:讲解烟花效果的基本原理和实现方法,以及C语言中相关数据结构和算法。

2.案例分析法:分析典型的烟花效果程序,引导学生独立思考和解决问题。

3.实验法:学生在实验室进行编程实践,培养动手能力。

4.讨论法:学生进行小组讨论,分享学习心得和编程经验。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《C语言程序设计》。

2.参考书:《C语言编程实例教程》。

3.多媒体资料:相关烟花效果的视频和图片。

4.实验设备:计算机和网络设备。

五、教学评估为了全面、客观、公正地评估学生在C语言课程中烟花效果编程的学习成果,我们将采取以下评估方式:1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的学习态度和积极性。

2.作业:布置与烟花效果编程相关的练习题,评估学生对知识的掌握和应用能力。

烟花表白源码

烟花表白源码
}
getchar();
cleardevice();
settextstyle(25, 0, "楷体");
outtextxy(400, 150, "什么都没有总比现在的好");
outtextxy(400, 200, "有一点点希望");
outtextxy(400, 250, "就得有多少的期望?");
#include <graphics.h>
#include <conio.h>
#include <math.h>
#include <time.h>
#include <stdio.h>
#include <Mmsystem.h>
#pragma comment ( lib, "Winmm.lib" )
outtextxy(400, 300, "又他妈的换来多少失望?");
outtextxy(400, 350, "烟花再美又怎么样?");
outtextxy(400, 400, "女孩自己要懂得自己挣钱");
outtextxy(400, 450, "会开车会打扮");
outtextxy(400, 500, "车子有油");
{
int n = rand() % 20;
if (n < 13 && Jet[n].shoot == false && Fire[n].show == false)

烟花代码c语言

烟花代码c语言

烟花代码c语言1 烟花的魅力烟花的魅力在很多人的想象中是不可抵抗的,来自日本的烟花表演和节日庆祝气氛被大量地应用在当今的社会中。

烟花让生活充满色彩,它们的壮观可以传达更多的言论,而扩展的烟花秀更让人印象深刻。

虽然它们看起来很美,但要产生效果,却要熟练地操作代码。

2 烟花代码烟花代码指的是用来控制烟花爆竹示范的程序,是由一系列的程序指令组成的编程代码。

这其中包括准备工作,爆竹同步准备、烟花点火和发射等不同类别的指令。

也就是说,这段代码会控制烟花飞行的轨迹,以及烟花在什么时候点燃;它的程序指令可以改变不同的烟花的飞行轨迹和爆炸时候的颜色、声音、烟雾等参数。

简单而言,它就像一种在空中绘画的工具,可以让演出变得更加壮观。

3 烟花代码C语言当前,C语言是用来写烟花代码最常用的编程语言。

它具有高效率、可靠性和灵活度的特点,尤其有助于开发复杂的烟花编程,可以大大提高烟花效果的多样性。

在使用C语言编写烟花代码之前,必须要先掌握C语言的基本知识,例如基本的数据类型、语句和表达式等,以及它们是如何处理数据并处理和产生结果的。

此外,在编写过程中,可以使用C语言中特殊的功能,如循环、分支和指针等,以及利用杂项特性,如用户宏定义等,实现复杂的功能。

4 烟花代码C语言的优势烟花代码C语言比其他编程语言具有几个优势:1. C语言可以轻松应用于多样化的环境,可以做出非常精确的设计;2. C语言的运行效率高,可以节省时间;3. 将C语言应用于烟花表演中,操作可以灵活、可靠而精准;4. 可以配置和调整烟花的发射频率、功率、弧度等参数,从而形成各种烟花组合;5. C语言中的数学功能也可用于计算烟花的飞行时间、飞行高度等。

5 结论烟花是一种艺术表现,而烟花代码C语言则是让这种表现更加精准美观的重要组成部分。

它解决了许多烟花执行的控制问题,大大提高了烟花表演的效率,使烟花的欣赏变得更加视觉化、精确化,把精彩的表演呈现在人们面前。

信息技术课烟花绽放流程

信息技术课烟花绽放流程

信息技术课烟花绽放流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!一、烟花绽放的基本原理。

烟花绽放是一种视觉效果,通常通过在计算机程序中模拟烟花的爆炸和发光来实现。

c语言烟花燃放代码

c语言烟花燃放代码

c语言烟花燃放代码烟花燃放是人们在庆祝节日或者特殊场合时常见的场景。

而在计算机编程领域,我们也可以通过代码来实现烟花燃放的效果。

在本文中,我将使用C语言编写一个简单的烟花燃放代码,并解释其实现原理。

我们需要了解烟花燃放的基本原理。

烟花燃放时,会有一连串的爆炸效果,每个爆炸都会产生一团花火。

这些花火会以不同的速度和方向向外扩散,并在空中绽放出五彩斑斓的光芒。

在代码实现中,我们可以使用图形库来模拟烟花燃放的效果。

在C 语言中,常用的图形库有graphics.h和SDL等。

在本文中,我们将使用graphics.h库来实现烟花燃放。

我们需要导入graphics.h库,并初始化图形窗口。

代码示例如下:```#include <graphics.h>int main(){int gd = DETECT, gm;initgraph(&gd, &gm, "");// 烟花燃放代码closegraph();return 0;}```接下来,我们可以使用一系列函数来实现烟花燃放的效果。

首先,我们需要定义一个结构体来表示烟花的属性,包括位置、颜色和速度等。

代码示例如下:```struct Firework{int x;int y;int color;int speed;};```然后,我们可以定义一个函数来生成烟花的初始属性。

这个函数可以随机生成烟花的位置、颜色和速度等。

代码示例如下:```void generateFirework(struct Firework* firework){firework->x = random(getmaxx());firework->y = getmaxy();firework->color = random(15) + 1;firework->speed = random(10) + 1;}```接下来,我们可以定义一个函数来更新烟花的位置。

烟花雨代码c语言

烟花雨代码c语言

烟花雨代码c语言intstate;//烟花的状态(1=正常,2=爆炸中,3=已消失)int numParticles; // 烟花所分裂出来的粒子数int color; // 烟花的颜色int particles[MAX_PARTICLES][6]; // 烟花所分裂出来的粒子(每个粒子的颜色、位置和速度)} Firework;int fireworksCount = 0; // 当前烟花数Firework fireworks[MAX_FIREWORKS]; // 所有烟花typedef struct {int x, y; // 爆炸中心的位置int age; // 爆炸的年龄int state; // 爆炸的状态(1=正常,2=已消失)int numParticles; // 爆炸所分裂出来的粒子数int color; // 爆炸的颜色int particles[MAX_PARTICLES][6]; // 爆炸所分裂出来的粒子(每个粒子的颜色、位置和速度)} Explosion;int explosionsCount = 0; // 当前爆炸数Explosion explosions[MAX_EXPLOSIONS]; // 所有爆炸int screenWidth = 800; // 屏幕宽度int screenHeight = 600; // 屏幕高度int main() {initwindow(screenWidth, screenHeight, '烟花雨代码C语言');srand(time(NULL));while (1) {cleardevice();// 生成烟花if (fireworksCount < MAX_FIREWORKS) {fireworks[fireworksCount].x = rand() % screenWidth;fireworks[fireworksCount].y = screenHeight;fireworks[fireworksCount].vx = (rand() % 5 - 2) * 2;fireworks[fireworksCount].vy = -(rand() % 10 + 10);fireworks[fireworksCount].fuse = rand() % 30 + 30;fireworks[fireworksCount].age = 0;fireworks[fireworksCount].state = 1;fireworks[fireworksCount].numParticles = rand() % 30 + 70; fireworks[fireworksCount].color = rand() % 15 + 1;for (int i = 0; i < fireworks[fireworksCount].numParticles; i++) {fireworks[fireworksCount].particles[i][0] = rand() % 15 + 1;fireworks[fireworksCount].particles[i][1] =fireworks[fireworksCount].x;fireworks[fireworksCount].particles[i][2] =fireworks[fireworksCount].y;fireworks[fireworksCount].particles[i][3] = (rand() % 5 - 2) * 2;fireworks[fireworksCount].particles[i][4] = -(rand() % 10 + 10);fireworks[fireworksCount].particles[i][5] = rand() % 30 + 30;}fireworksCount++;}// 更新烟花状态和位置for (int i = 0; i < fireworksCount; i++) {if (fireworks[i].state == 1) {fireworks[i].x += fireworks[i].vx;fireworks[i].y += fireworks[i].vy;fireworks[i].vy += 1;fireworks[i].fuse--;if (fireworks[i].fuse <= 0) {fireworks[i].state = 2;if (explosionsCount < MAX_EXPLOSIONS) {explosions[explosionsCount].x = fireworks[i].x;explosions[explosionsCount].y = fireworks[i].y;explosions[explosionsCount].age = 0;explosions[explosionsCount].state = 1;explosions[explosionsCount].numParticles =fireworks[i].numParticles;explosions[explosionsCount].color = fireworks[i].color; for (int j = 0; j <explosions[explosionsCount].numParticles; j++) {explosions[explosionsCount].particles[j][0] = rand() % 15 + 1;explosions[explosionsCount].particles[j][1] = explosions[explosionsCount].x;explosions[explosionsCount].particles[j][2] = explosions[explosionsCount].y;explosions[explosionsCount].particles[j][3] = (rand() % 5 - 2) * 2;explosions[explosionsCount].particles[j][4] = (rand() % 5 - 2) * 2;explosions[explosionsCount].particles[j][5] = rand() % 30 + 30;}explosionsCount++;}}} else if (fireworks[i].state == 2) {fireworks[i].age++;if (fireworks[i].age >= 30) {fireworks[i].state = 3;}}}// 更新爆炸状态和位置for (int i = 0; i < explosionsCount; i++) { if (explosions[i].state == 1) {explosions[i].age++;if (explosions[i].age >= 30) {explosions[i].state = 2;}}}// 绘制烟花和爆炸for (int i = 0; i < fireworksCount; i++) { if (fireworks[i].state == 1) {setcolor(fireworks[i].color);line(fireworks[i].x, fireworks[i].y, fireworks[i].x + fireworks[i].vx, fireworks[i].y + fireworks[i].vy);} else if (fireworks[i].state == 2) {for (int j = 0; j < fireworks[i].numParticles; j++) {setcolor(fireworks[i].particles[j][0]);line(fireworks[i].particles[j][1],fireworks[i].particles[j][2], fireworks[i].particles[j][1] + fireworks[i].particles[j][3], fireworks[i].particles[j][2] + fireworks[i].particles[j][4]);}}}for (int i = 0; i < explosionsCount; i++) {if (explosions[i].state == 1) {for (int j = 0; j < explosions[i].numParticles; j++) {setcolor(explosions[i].color);line(explosions[i].particles[j][1],explosions[i].particles[j][2], explosions[i].particles[j][1] + explosions[i].particles[j][3],explosions[i].particles[j][2] +explosions[i].particles[j][4]);}}}// 移除已消失的烟花和爆炸for (int i = 0; i < fireworksCount; i++) {if (fireworks[i].state == 3) {for (int j = i; j < fireworksCount - 1; j++) { fireworks[j] = fireworks[j + 1];}fireworksCount--;i--;}}for (int i = 0; i < explosionsCount; i++) {if (explosions[i].state == 2) {for (int j = i; j < explosionsCount - 1; j++) { explosions[j] = explosions[j + 1];}explosionsCount--;i--;}}delay(20); }return 0; }。

C++烟花

C++烟花

C++烟花#include#include#include#include#include#include#definePI3.1415926535voidstar(intx,inty); voiddrawstar();voidPutstar(void); voidstarflower();intmain(){initgraph(640,480); drawstar();starflower();getch();closegraph();return0;}voidstar(intx,inty)/画星星函数/ {inti,a;intn=5;intx1[5],y1[5],x2[5],y2[5];setcolor(YELLOW);for(i=0;i<5;i++){x1[i]=(int)(x+ncos(i72PI/180)+0.5);y1[i]=(int)(y+nsin(i72PI/180)+0.5);x2[i]=(int)(x+n/2cos(i72PI/180+PI/5)+0.5); y2[i]=(int)(y+n/2sin(i72PI/180+PI/5)+0.5); }for(i=0;i<5;i++){a=i+1;if(a>4)a=0;line(x1[i],y1[i],x2[i],y2[i]);/两点间画直线/line(x2[i],y2[i],x1[a],y1[a]);}}voidPutstar(void)/画繁星函数/{intseed=1858;inti,dotx,doty,h,w,color;w=getwidth();/得到屏幕最大X坐标/ h=getheight();/得到屏幕最大Y坐标/ srand(seed);/产生随机数/for(i=0;i<100;++i){dotx=i+rand()%w;doty=1+rand()%h;color=rand()%h;setcolor(color);putpixel(dotx,doty,color);/在指定位置画一像素/ circle(dotx+1,doty+1,1);}srand(seed);}voiddrawstar(){inta[]={70,280,230,440,140,110,180,90,500,360}; intb[]={50,27,88,99,100,37,67,98,60,78},i; setfillstyle(1,14);for(i=0;i<10;i++){star(a[i],b[i]);floodfill(a[i],b[i],YELLOW);}Putstar();}voidstarflower()/烟花绽放函数/ {inti=0,j,n=60,n1=2;intx=200,y=200,size=100; intcover=0;intdelay1=10;intpx,py;intcolor=LIGHTBLUE;while(!kbhit()){if(i{for(j=0;j{px=(int)(x+icos(j360/nPI/180)+0.5);py=(int)(y+isin(j360/nPI/180)+0.5);putpixel(px,py,HSLtoRGB((float)(rand()%360),1,0.5)); putpixel(px-1,py,color);putpixel(px,py+1,color);putpixel(px+1,py-1,YELLOW);putpixel(px,py-1,YELLOW);putpixel(px+1,py,RED);putpixel(px+1,py+1,RED); }}if(i>size&&cover{setcolor(BLACK); fillcircle(x,y,cover++); delay1=10;}if(cover==size){i=0;x=50+rand()%550;y=rand()%400;cover=0;color=rand()%16;size=50+rand()%250; delay1=20; cleardevice(); drawstar();}i+=n1;Sleep(delay1);/暂停/ }}。

计算机C语言课程设计——礼花的绽放

计算机C语言课程设计——礼花的绽放

计算机技术基础课程设计C语言设计报告题目:礼花绽放学院:工商管理学院专业:信息管理与信息系统班级:姓名:指导教师:设计日期:2006年12月16日一、选题背景:用C语言程序过程中,编辑图形是很有意思的,再这里我设计一款‘礼花绽放’图形,使感观上,以为在WINDOWS下画的一样,让人耳目一新的感觉。

二、设计思路:程序通过定义结构体确定了存放礼花的位置,而后通过调用自定义函数up()、shan()、ceng()、dian() 、bomb()等将礼花的形状、上升过程、盛开过程以及礼花爆发瞬间的过程充分的展现了出来,并且自定义了一个fengmian函数将画面显现的更加炫美。

三:设计分析:应用技术点及主要解决问题阐述程序通过定义结构体确定了存放礼花的位置,而后通过调用自定义函数up()、shan()、ceng()、dian() 、bomb()等将礼花的形状、上升过程、盛开过程以及礼花爆发瞬间的过程充分的展现了出来,并且自定义了一个fengmian函数将画面显现的更加炫美。

技术关键通过自己定义的函数和声明一个结构,主要方法是先使用int函数定义,不同的选择进入不同的定义函数,通过for语句进行判断,然后使用数组的各种方式打开此文件,然后通过while函数和for函数关闭文件,在不同的取用数值里,分别使用for,while语句进行判断是否进行下条语句。

四:程序流程图五、程序清单:#include "Conio.h"#include "graphics.h"#include "stdio.h"#include "stdlib.h"#include "bios.h"#include "math.h"struct cir /*存放礼花的位置*/{int x;int y;}place;void initgr(void) /* BGI初始化 */{int gd=DETECT,gm=0;initgraph(&gd,&gm,"d:\\tc");}void up() /*礼花炮上升*/{ int aimy;randomize();place.x=random(440)+100; /*设定礼花的范围*/ place.y=470;aimy=random(300)+60;setlinestyle(0,0,1);setcolor(WHITE);circle(place.x,place.y,3);while(place.y!=aimy) /*礼花的上升过程*/ {setcolor(BLACK);circle(place.x,place.y,3);place.y--;setcolor(WHITE);circle(place.x,place.y,3);delay(1000);}setcolor(BLACK);circle(place.x,place.y,3);}shan() /*礼花形状一*/{int j,n1,x,t1=1,y;int p_color;for(j=0;j<400;j++){n1=rand()%2;t1=pow(-1,n1);x=place.x+t1*(rand()%100);n1=rand()%2;t1=pow(-1,n1);y=place.y+t1*(rand()%100);if(x<35) x=35; /*限制礼花越过窗体*/ if(x>getmaxx()-35) x=getmaxx()-35;if(y<5) y=5;p_color=rand()%15;setlinestyle(0,0,3);setcolor(p_color);line(place.x,place.y,x,y);delay(1000);setcolor(BLACK);line(place.x,place.y,x,y);}}ceng() /*礼花形状二*/{float x,y,r;int i;int c_color;float k;k=2*3.14/60;for(r=10;r<100;r++){for(i=0;i<60;i++){x=r*sin(k*i)+place.x;y=r*cos(k*i)+place.y;if(x<35) x=35;if(x>getmaxx()-35) x=getmaxx()-35;if(y<5) y=5;c_color=rand()%15;putpixel(x,y,c_color);delay(80);}}for(r=10;r<100;r++){for(i=0;i<60;i++){x=r*sin(k*i)+place.x;y=r*cos(k*i)+place.y;if(x<35) x=35;if(x>getmaxx()-35) x=getmaxx()-35;if(y<5) y=5;putpixel(x,y,BLACK);delay(60);}}}dian() /*礼花形状三*/{int i,j,r;float x[500],y[500];float k;int c_color;k=2*3.14/60;for(j=0;j<500;j++){i=rand()%60;r=rand()%100;x[j]=r*sin(k*i)+place.x;y[j]=r*cos(k*i)+place.y;if(x[j]<35) x[j]=35;if(x[j]>getmaxx()-35) x[j]=getmaxx()-35;if(y[j]<5) y[j]=5;c_color=rand()%15;setcolor(c_color);circle(x[j],y[j],1);delay(1500);}for(j=0;j<500;j++){setcolor(BLACK);circle(x[j],y[j],1);}}void bomb() /*礼花盛开*/{int r1,i,n,t=1,q=1,k=1;int pointX,pointY,point_color;setcolor(YELLOW);/*-------------这个过程模拟礼花爆炸瞬间的状态-----------------*/ for(r1=1;r1<=4;r1++){circle(place.x,place.y,r1);delay(1000);}delay(3000);setcolor(RED);for(r1=4;r1<=6;r1++){circle(place.x,place.y,r1);delay(1000);}delay(3000);setcolor(BLACK);for(r1=6;r1>=1;r1--){circle(place.x,place.y,r1);delay(1000);}for(i=1;i<=20;i++){point_color=rand()%15;n=rand()%2;t=pow(-1,n);pointX=(t*(rand()%6)+place.x);n=rand()%2;t=pow(-1,n);pointY=(t*(rand()%6)+place.y);putpixel(pointX,pointY,point_color); delay(2000);putpixel(pointX,pointY,BLACK);}/*----------------------------------------*/ n=rand()%3;switch(n) /*随机盛开不同的厉害*/{case 0:shan(); break;case 1:ceng(); break;case 2:dian(); break;default:break;}}fengmian() /*封面程序*/{int i,j=0;while(1) /**/{settextstyle(0,0,4); /*设置文字输出模式*/for(i=1;i<=15;i++){setcolor(i);outtextxy(100,180,"HAPPY NEW YEAR"); /*新年快乐*/ delay(10000);}j++;if(j>5) break;}cleardevice();}main(){initgr();fengmian();setbkcolor(BLACK); /*绘制窗体*/setcolor(YELLOW);setfillstyle(SOLID_FILL,9);rectangle(0,0,getmaxx(),getmaxy());rectangle(1,1,getmaxx()-1,getmaxy()-1);rectangle(2,2,30,getmaxy()-2);rectangle(getmaxx()-32,2,getmaxx()-2,getmaxy()-2);while(!kbhit()) /*进入礼花程序*/{up();bomb();}getch();closegraph();}六:设计自评:设计优点:本程序语句简单明了,结构清晰,其实就是很简单的把礼花绽放的过程进行抽象,分成几个点,而截取这些点的集合,通过形状等描述,使得其很好的满足作者初衷。

C语言实现放烟花的程序

C语言实现放烟花的程序

C语⾔实现放烟花的程序这是⼀个利⽤C语⾔编写放烟花的程序(同时也可以播放⾳乐),供⼤家参考,具体内容如下代码如下#pragma once#include<stdio.h>#include<graphics.h> //图形界⾯库头⽂件#include<math.h> //计算圆形的轨迹坐标#include<conio.h>#include<time.h>#include<stdlib.h>#include<mmsystem.h>#pragma comment(lib,"winmm.lib")//#include 包含头⽂件//#pragma comment(lib."⽂件名称")包含库⽂件constexpr auto WND_WIDTH = 1000;constexpr auto WND_HEIGHT = 600;constexpr auto PI = 3.141592653589793238;constexpr auto NUM = 14;/***********结构****************/struct JET //烟花弹{int x, y; //发射点坐标int hx, hy; //最⾼点坐标爆炸坐标int height; //⾼度最⾼点y 发射点y的差值bool isshoot; //是否发射状态DWORD t1, t2, dt; //保存时间时间可以⽤来描述发射速度IMAGE img[2]; //保存烟花⼀明⼀暗的图⽚byte n : 1; //保存烟花弹的明暗状态位段//字节为单位 int 4 char 1 n⼀个位 0-1}jet[NUM]; //结构体数组13 img这个数组struct FIRE{int r;int max_r;int x, y;int cen_x, cen_y;int width, height;int xy[240][240];bool show;bool draw;DWORD t1, t2, dt;}fire[NUM];void welcome();void init(int i);void loadimages();void choice(DWORD& t1);void shoot();void Show(DWORD* pMem);void clss(int a);void delay(int a);void detabase(int a);int main(){//res 1.wavPlaySound(L"sound.dll", NULL, SND_LOOP | SND_FILENAME | SND_ASYNC);//mp3播放//mciSendString(L"open 1.mp3 alias bkmusic", NULL, 0, NULL);//mciSendString(L"play bkmusic repeat", NULL, 0, NULL);int a;for (a = 0; a < 5; a++){detabase(a);delay(100000);clss(1);}delay(500000);initgraph(WND_WIDTH, WND_HEIGHT); //init初始化 graph图形界⾯窗⼝srand((unsigned int)time(NULL));DWORD t1 = timeGetTime();DWORD* pMem = GetImageBuffer();//第⼀个界⾯welcome();//初始化for (int i = 0; i < NUM; i++){init(i);}loadimages();BeginBatchDraw();while (!_kbhit()){//Sleep(10);for (int i = 0; i < 1000; i++){for (int j = 0; j < 3; j++){int px1 = rand() % 1000;int py1 = rand() % 600;if (py1 < 599){pMem[py1 * 1000 + px1] = pMem[py1 * 1000 + px1 + 1] = BLACK;}}}choice(t1);shoot();Show(pMem);EndBatchDraw();}return 0;}void welcome(){settextcolor(YELLOW);for (int i = 0; i < 50; i++){//圆⼼(500,300)半径150 60个均匀点的x,yint x = 500 + int(150 * sin(PI * 2 * i / 60));int y = 300 + int(150 * cos(PI * 2 * i / 60));cleardevice();settextstyle(i, 0, L"微软雅⿊");outtextxy(x - 100, y - 150, L"测试使⽤1234567890"); //在指定的位置去输出字符 outtextxy(x, y - 100, L"测试1234567890");Sleep(25);}//_getch(); //接收字符不回显直接接收Sleep(2000);cleardevice();settextstyle(25, 0, L"宋体");outtextxy(400, 150, L"1,");outtextxy(400, 200, L"2");outtextxy(400, 250, L"3,");outtextxy(400, 300, L"4,");outtextxy(400, 350, L"5");outtextxy(560, 400, L"---6");Sleep(3000);//_getch();}void init(int i){int r[14] = { 120,120,155,123,130,147,138,138,130,135,140,132,155,160 };int x[14] = { 120,120,110,117,110,93,102,102,110,105,100,108,110,132 };int y[14] = { 120,120,85,118,120,105,103,110,110,120,1201,04,85,145 };fire[i].x = 0;fire[i].y = 0;fire[i].width = 240;fire[i].height = 240;fire[i].max_r = r[i];fire[i].cen_x = x[i];fire[i].cen_y = y[i];fire[i].show = false;fire[i].dt = 5;fire[i].t1 = timeGetTime();fire[i].r = 0;//初始化烟花弹jet[i].x = 0;jet[i].y = 0;jet[i].hx = 0;jet[i].hy = 0;jet[i].height = 0;jet[i].t1 = timeGetTime(); //获取系统时间jet[i].dt = rand() % 10; //0-9的随机时间jet[i].n = 0;jet[i].isshoot = false;}void loadimages(){IMAGE fm, gm;loadimage(&fm, L"flower.dll", 3120, 240);for (int i = 0; i < NUM; i++){SetWorkingImage(&fm);getimage(&gm, i * 240, 0, 240, 240);SetWorkingImage(&gm);for (int a = 0; a < 240; a++){for (int b = 0; b < 240; b++){fire[i].xy[a][b] = getpixel(a, b);}}}IMAGE jetimg;loadimage(&jetimg, L"shoot.dll", 200, 50);//set设置 working正在⼯作的 image图⽚SetWorkingImage(&jetimg);for (int i = 0; i < NUM; i++){int n = rand() % 5; //0-4的随机数getimage(&jet[i].img[0], n * 20, 0, 20, 50);getimage(&jet[i].img[1], (n + 5) * 20, 0, 20, 50);}SetWorkingImage(NULL);}void choice(DWORD& t1){DWORD t2 = timeGetTime();if (t2 - t1 > 2) //2ms产⽣⼀个烟花弹{int n = rand() % 200; //0-199if (n < NUM && jet[n].isshoot == false && fire[n].show == false) {//重置烟花弹jet[n].x = rand() % (WND_WIDTH - 20);jet[n].y = rand() % 100 + 400; //450-549jet[n].hx = jet[n].x;jet[n].hy = rand() % 400; //0-399jet[n].height = jet[n].y - jet[n].hy;jet[n].isshoot = true;//nputimage(jet[n].x, jet[n].y, &jet[n].img[jet[n].n]);}t1 = t2;}}void shoot(){for (int i = 0; i < NUM; i++){jet[i].t2 = timeGetTime();if (jet[i].t2 - jet[i].t1 > jet[i].dt && jet[i].isshoot == true){putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);if (jet[i].hy < jet[i].y){jet[i].n++; //0-1 明暗交替jet[i].y -= 5;}putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);if (jet[i].y <= jet[i].hy){fire[i].y = jet[i].hy;fire[i].x = jet[i].hx;fire[i].show = true;jet[i].isshoot = false;}jet[i].t1 = jet[i].t2;}}}void Show(DWORD* pMem){int drt[16] = { 5,5,5,5,5,6,25,25,25,25,25,55,55,55,55,55 }; //dt for (int i = 0; i < NUM; i++){fire[i].t2 = timeGetTime();if (fire[i].t2 - fire[i].t1 > fire[i].dt && fire[i].show == true){if (fire[i].r < fire[i].max_r){fire[i].r++;fire[i].dt = drt[fire[i].r / 10];fire[i].draw = true;}if (fire[i].r >= fire[i].max_r - 1){fire[i].draw = false;init(i);}fire[i].t1 = fire[i].t2;}if (fire[i].draw){for (double a = 0; a <= 6.28; a += 0.01){int x1 = (int)(fire[i].cen_x + fire[i].r * cos(a));int y1 = (int)(fire[i].cen_y + fire[i].r * sin(a));if (x1 > 0 && x1 < fire[i].width && y1>0 && y1 < fire[i].height) {int b = fire[i].xy[x1][y1] & 0xff;int g = (fire[i].xy[x1][y1] >> 8) & 0xff;int r = (fire[i].xy[x1][y1] >> 16);int xx = (int)(fire[i].x + fire[i].r * cos(a));int yy = (int)(fire[i].y + fire[i].r * sin(a));if (r > 0x20 && g > 0x20 && b > 0x20 && xx > 0 && xx < 1000 && yy < 600 && yy>0) {pMem[yy * 1000 + xx] = BGR(fire[i].xy[x1][y1]);}}}fire[i].draw = true;}}}void clss(int a){system("cls");}void delay(int a){while (a){a--;}}void detabase(int a){switch (a){case 1:{//printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");printf(" ■■■■ \n");printf(" ■■■■■■■■■■■■\n");printf(" ■■■■■■■■■■■ \n");printf(" ■■■■■■■■■■■■■■ \n");printf(" ■■■■■■■■■■■■■■ \n");printf(" ■■■ \n");printf(" ■■■■■■ \n");printf(" ■■■■■■ \n");printf(" ■■■■■■ \n");printf("■■■■■■■■■■■■■■■■■■■■■■■\n");printf("■■■■■■■■■■■■■■■■■■■■■■■■\n");printf(" ■■■■■■ \n");printf(" ■■■■■■ \n");printf(" ■■■■■■■■■■■■■■■■ \n");printf(" ■■■■■■■■■■■■■■■■ \n");printf(" ■■■■■■ \n");printf(" ■■■■■■■■ \n");printf(" ■■■■■■■■■■■ \n");printf(" ■■■■■■■■■■ \n");printf(" ■■■■■■■■■■■ \n");printf("■■■■■■■■■■ \n");printf("■■■■■■■■ \n");printf(" ■■■■■■■■■ \n");printf(" ■■■■■■■ \n");}break;case 2:{//printf("■■■■■■■■■■■■■■■■■■■■■■■■\n");printf(" ■■■ \n");printf(" ■■■ \n");printf(" ■■ \n");printf(" ■■■ \n");printf(" ■■■■■■■■■■■■■■■■■■■ \n");printf(" ■■■■■■■ \n");printf(" ■■■■■ \n");printf(" ■■■■■ \n");printf(" ■■■■■■ \n");printf("■■■■■■ \n");printf(" ■■■■■■■■■■■■■■■■■■■ \n");printf(" ■■■■■■■■■■■■■■■■■ \n");printf(" ■■■■ \n");printf(" ■■■■ \n");printf(" ■■■■ \n");printf(" ■■■■ \n");printf(" ■■■■ \n");printf("■■■■■■■■■■■■■■■■■■■■■■■■\n");printf("■■■■■■■■■■■■■■■■■■■■■■■■\n");printf(" ■■ \n");printf(" ■■ \n");printf(" ■■ \n");printf(" ■■ \n");printf(" ■■ \n");printf(" ■■ \n");printf(" ■■ \n");}break;case 3:{//printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n"); printf(" ■■■■ \n");printf(" ■■■■ \n");printf(" ■■■■ \n");printf(" ■■■■ \n");printf(" ■■■■■■■■■■■■■ \n");printf(" ■■■■■■■■■■■■■■ \n");printf(" ■■■■■■■■■■ \n");printf(" ■■■■■■■■■■ \n");printf("■■■■■■■■■■ \n");printf("■■■■■■■■■■■ \n");printf("■■■■■■■■ \n");printf("■■■■■■■■ \n");printf("■■■■■■■■■ \n");printf(" ■■■■■■■■■■■■■■■■■■\n");printf(" ■■■■■■■■■■■■■■\n");printf(" ■■■■■ \n");printf(" ■■■■■■ \n");printf(" ■■■■■■ \n");printf(" ■■■■■■ \n");printf(" ■■■■■■ \n");printf(" ■■■■■■■ \n");printf(" ■■■■■■■■ \n");printf(" ■■■■■■■■■ \n");printf(" ■■■■■■■■■■\n");printf(" ■■■■■■■ \n");printf(" ■■■ \n");}break;case 4:{//不⽤不⽤//printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n"); printf(" ■■ \n");printf(" ■■■■■■■■■■■■■■■■ \n");printf(" ■■■■■■■■■■■■■■■■■■■ \n");printf(" ■■■ \n");printf(" ■■ \n");printf(" ■■■■ \n");printf(" ■■■■ \n");printf(" ■■■■ \n");printf(" ■■■■ \n");printf(" ■■■■■ \n");printf(" ■■■■■ \n");printf(" ■■■■■■■■■■■■■■■■■■■■■ \n");printf(" ■■■■■■■■ \n");printf(" ■■ \n");printf(" ■■ \n");printf(" ■■■ \n");printf(" ■■■■■■■■■ \n");printf(" ■■■■■■■■■ \n");printf(" ■■■■■■■■■ \n");printf(" ■■■■■■■■■ \n");printf(" ■■■■■■■■■ \n");printf(" ■■■■■ \n");printf(" ■■■■■ \n");printf(" ■■■■■ \n");printf(" ■■■■ \n");printf(" ■■ \n");}break;case 5:{printf("happy spring festival!");}break;}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

c语言烟花程序代码

c语言烟花程序代码

c语言烟花程序代码下面是一个简单的C 语言烟花程序代码:cinclude <stdio.h>include <stdlib.h>include <time.h>include <Windows.h>void delay(int milliseconds) {long pause;clock_t now, then;pause = milliseconds * (CLOCKS_PER_SEC / 1000);now = then = clock();while ((now - then) < pause) {now = clock();}}void setCursorPos(int x, int y) {COORD pos = {x, y};HANDLE output =GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(output, pos);}void setColor(int color) {HANDLE output =GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(output, color);}int main() {srand(time(NULL));int width = 50;int height = 20;int x = width / 2;int y = height - 2;while (1) {int r = rand() 256;int g = rand() 256;int b = rand() 256;int color = r + g * 256 + b * 256 * 256;int speed = 1 + rand() 5;int angle = 30 + rand() 121;int rads = angle * 3.14159 / 180;float vx = speed * cos(rads);float vy = -speed * sin(rads);setCursorPos(x, y);setColor(color);printf(".");delay(100);setCursorPos(x, y);printf(" ");x += vx;y += vy;vx *= 0.99;vy += 0.08;if (y >= height) {break;}}setColor(15);setCursorPos(0, height);printf("烟花绽放完毕!\n");return 0;}第一步:了解代码功能这段代码实现了一个简单的烟花绽放效果。

plc节日礼花引爆控制课程设计

plc节日礼花引爆控制课程设计

plc节日礼花引爆控制课程设计一、课程目标知识目标:1. 学生能够理解PLC(可编程逻辑控制器)的基本原理,掌握其在节日礼花引爆控制中的应用。

2. 学生能够描述并分析节日礼花引爆过程中涉及的传感器、执行器及其与PLC 的连接方式。

3. 学生能够解释并运用PLC编程语言,编写简单的节日礼花引爆控制程序。

技能目标:1. 学生能够运用所学知识,设计并实现一个简单的节日礼花引爆控制系统。

2. 学生能够通过实际操作,熟练使用PLC进行编程和调试,提高实际动手能力。

3. 学生能够通过团队协作,解决在PLC节日礼花引爆控制过程中遇到的问题。

情感态度价值观目标:1. 学生能够增强对自动化技术及PLC控制系统的兴趣,培养创新意识和探索精神。

2. 学生能够认识到科技在传统节日庆祝活动中的重要作用,提高对传统文化的认识和尊重。

3. 学生能够在团队合作中,学会互相尊重、沟通与协作,培养集体荣誉感和责任感。

本课程针对高年级学生,结合PLC技术原理、编程与应用,注重实践操作和团队协作。

课程目标旨在使学生掌握PLC在节日礼花引爆控制中的应用,提高实际动手能力,同时培养对传统文化的认识和尊重,提升情感态度价值观。

通过分解课程目标为具体的学习成果,为后续教学设计和评估提供明确依据。

二、教学内容1. PLC基本原理与结构:介绍PLC的发展历程、基本组成、工作原理,使学生了解PLC的核心功能和应用领域。

- 教材章节:第一章《PLC概述》- 内容:PLC的定义、结构、工作原理等。

2. PLC编程语言及指令系统:讲解PLC编程语言,使学生掌握基本指令和编程方法。

- 教材章节:第二章《PLC编程语言与指令系统》- 内容:编程语言、基本指令、应用实例等。

3. 传感器与执行器:介绍在节日礼花引爆控制中常用的传感器、执行器及其与PLC的连接方式。

- 教材章节:第三章《PLC输入输出接口与设备》- 内容:传感器、执行器、接口技术等。

4. PLC控制系统设计:讲解如何设计一个简单的节日礼花引爆控制系统,包括硬件选型、编程、调试等。

c语言烟花代码复制

c语言烟花代码复制

c语言烟花代码复制C语言是一种广泛应用的编程语言,是许多计算机科学和软件开发领域必要的基础。

然而,有时对于初学者来说,编写复杂的程序可以是一项艰苦的工作,因为他们需要考虑许多方面的问题。

在这种情况下,拥有一些可以复制的代码可以是非常有用的。

在本文中,我们将讨论一种非常好玩的方法来练习C语言技能——复制烟花的代码。

第一步是准备工作。

要开始编写代码,需要安装并配置一个可用的C编译器。

此外,还需要一些基本的编程知识,例如变量、循环和条件语句。

还需要学习一些关于图形和图像处理的知识,因为烟花代码涉及到处理和渲染图形。

你可以参考下面的代码进行代码复制和理解:``` #include<graphics.h> #include<conio.h> #include<dos.h> int main() { intgd=DETECT,gm; initgraph(&gd,&gm,"C:\\TC\\BGI"); setbkcolor(0); int midx,midy,i,flag=0;midx=getmaxx()/2; midy=getmaxy()/2;while(!kbhit()) { for(i=0;i<60;i++){ setcolor(i/10+1);setfillstyle(SOLID_FILL,i/10+1);circle(midx,midy,i); floodfill(midx,midy,i/10+1); if(flag!=5) { setcolor(0);setfillstyle(SOLID_FILL,0);circle(midx,midy,2+i);floodfill(midx,midy,0); } if(i==55) flag++; delay(15); } if(flag==6) flag=0; }getch(); closegraph(); return 0; } ```这是一个模拟烟花爆炸的代码,它在绘制出一组圆形的同时,按照各种颜色进行着色。

好看的c语言程序烟花源代码

好看的c语言程序烟花源代码

好看的c语言程序烟花源代码烟花是人们新年、庆祝等节日最喜爱的庆祝道具之一,而用C语言编写的烟花程序更是酷炫、有趣,甚至具有一定的指导意义。

本程序采用的是Win32 API图形和多线程,实现了屏幕上多个烟花同时绽放、炫彩夺目的效果。

以下是程序代码:```include <stdio.h>include <windows.h>include <stdlib.h>include <time.h>define MAX_FIREWORKS 10define MAX_PARTICLES 100struct ParticleStruct {float x, y;float vx, vy;float brightness;};struct FireworkStruct {int x, y;int color;int particlesLeft;bool exploded;ParticleStruct particles[MAX_PARTICLES];};FireworkStruct fireworks[MAX_FIREWORKS];int screenHeight, screenWidth;HDC hDCMem;HBITMAP hBitmap;HBITMAP hOldBitmap;void InitializeFirework(int index) {fireworks[index].x = rand() % screenWidth;fireworks[index].y = screenHeight - 1;fireworks[index].color = RGB(rand() % 256, rand() % 256, rand() % 256);fireworks[index].particlesLeft = rand() % 101 + 100;for (int i = 0; i < MAX_PARTICLES; i++) {fireworks[index].particles[i].x =fireworks[index].x;fireworks[index].particles[i].y =fireworks[index].y;fireworks[index].particles[i].vx = (rand() % 11 - 5) / 10.0;fireworks[index].particles[i].vy = (rand() % 11 - 10) / 10.0;fireworks[index].particles[i].brightness = 1.0;}}void InitializeFireworks() {for (int i = 0; i < MAX_FIREWORKS; i++)InitializeFirework(i);}bool UpdateFirework(int index) {fireworks[index].y -= rand() % 6 + 3;if (fireworks[index].y < screenHeight / 4) { fireworks[index].exploded = true;for (int i = 0; i < MAX_PARTICLES; i++) { fireworks[index].particles[i].vx = 0; fireworks[index].particles[i].vy = 0; }}return true;}else {bool particleExists = false;for (int i = 0; i < MAX_PARTICLES; i++){fireworks[index].particles[i].vx *= 0.95; fireworks[index].particles[i].vy *= 0.95;fireworks[index].particles[i].x +=fireworks[index].particles[i].vx;fireworks[index].particles[i].y +=fireworks[index].particles[i].vy;fireworks[index].particles[i].brightness *=0.975;if (fireworks[index].particles[i].brightness > 0.0)particleExists = true;}fireworks[index].particlesLeft--;if (fireworks[index].particlesLeft == 0|| !particleExists) {InitializeFirework(index);return false;}return true;}}void UpdateFireworks() {for (int i = 0; i < MAX_FIREWORKS; i++)UpdateFirework(i);}void DrawFireworks() {HBRUSH hBrush;for (int i = 0; i < MAX_FIREWORKS; i++) {if (!fireworks[i].exploded) {hBrush = CreateSolidBrush(fireworks[i].color);SelectObject(hDCMem, hBrush);Ellipse(hDCMem, fireworks[i].x - 5,fireworks[i].y - 5, fireworks[i].x + 5, fireworks[i].y + 5);DeleteObject(hBrush);}else {for (int j = 0; j < MAX_PARTICLES; j++) {hBrush = CreateSolidBrush(RGB(255, 255, 255)/*fireworks[i].color*/);SelectObject(hDCMem, hBrush);SetPixel(hDCMem,fireworks[i].particles[j].x, fireworks[i].particles[j].y, fireworks[i].color*fireworks[i].particles[j].brightness);DeleteObject(hBrush);}}}}DWORD WINAPI UpdateThread(LPVOID lpParam) {while (true) {UpdateFireworks();Sleep(10);}return 0;}int main() {HWND hWnd = GetDesktopWindow();HDC hDC = GetDC(hWnd);screenHeight = GetSystemMetrics(SM_CYSCREEN);screenWidth = GetSystemMetrics(SM_CXSCREEN);hDCMem = CreateCompatibleDC(hDC);hBitmap = CreateCompatibleBitmap(hDC, screenWidth, screenHeight);hOldBitmap = (HBITMAP)SelectObject(hDCMem, hBitmap);InitializeFireworks();CreateThread(NULL, 0, &UpdateThread, NULL, 0, NULL);MSG msg;BOOL bRet;while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0) { if (bRet == -1)break;else {TranslateMessage(&msg);DispatchMessage(&msg);DrawFireworks();BitBlt(hDC, 0, 0, screenWidth, screenHeight, hDCMem, 0, 0, SRCCOPY);}}SelectObject(hDCMem, hOldBitmap);DeleteObject(hBitmap);DeleteDC(hDCMem);ReleaseDC(hWnd, hDC);return 0;}```本程序实现了多个烟花同时在屏幕上绽放和消失,其中每个烟花的颜色和位置随机生成。

c课程设计烟花

c课程设计烟花

c课程设计烟花一、教学目标本章节的教学目标分为三个部分:知识目标、技能目标和情感态度价值观目标。

知识目标:通过学习,学生能够掌握烟花的基本原理、种类和特点,了解烟花的历史和文化背景。

技能目标:学生能够运用所学知识,设计和制作一种简单的烟花模型,并能够进行烟花表演的策划和实施。

情感态度价值观目标:培养学生对传统文化的热爱和尊重,提高学生对燃放烟花的安全意识,培养学生团队合作和创新思维的能力。

二、教学内容本章节的教学内容主要包括烟花的基本原理、种类和特点,烟花的历史和文化背景,烟花的设计和制作技术,以及烟花表演的策划和实施。

具体内容包括:1.烟花的基本原理:介绍烟花的工作原理、燃烧过程和化学反应。

2.烟花的种类和特点:介绍不同种类的烟花,如喷花、升空烟花、旋转烟花等,并分析它们的特点和适用场合。

3.烟花的历史和文化背景:介绍烟花在我国的历史发展,以及不同节日和庆典中烟花的意义和文化内涵。

4.烟花的设计和制作技术:介绍烟花的设计原则、构图技巧和制作工艺。

5.烟花表演的策划和实施:讲解如何策划一场烟花表演,包括烟花的选型、布局、音乐搭配等,并介绍实施过程中的安全注意事项。

三、教学方法为了提高教学效果,本章节将采用多种教学方法相结合的方式进行教学。

1.讲授法:教师通过讲解烟花的基本原理、种类、历史和文化背景等内容,使学生掌握相关知识。

2.案例分析法:通过分析典型烟花案例,使学生了解烟花设计和制作的技术要点。

3.实验法:学生进行烟花制作实验,培养学生的动手能力和创新能力。

4.讨论法:分组讨论烟花表演策划和实施的问题,培养学生团队合作和解决问题的能力。

四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用符合课程要求的烟花制作和表演教材,为学生提供系统的学习资料。

2.参考书:提供相关的烟花制作、设计和文化资料,丰富学生的知识储备。

3.多媒体资料:收集烟花表演的视频和图片,为学生提供直观的学习体验。

C语言实战之浪漫烟花表白程序

C语言实战之浪漫烟花表白程序

创建win32控制台应用程序,选择空项目。

创建完毕后,右击头文件新建一个头文件(.h)。

名字写main.h然后在源文件新建一个C++文件(.cpp)。

名字写main.cpp 如图:然后在main.h里面写上如下代码:#include<stdio.h>#include<graphics.h>#include<time.h>#include<stdlib.h>#include<math.h>#include<mmsystem.h>#pragma comment(lib,"winmm.lib")#define PI 3.1415926535#define NUM13//烟花弹struct JET{int x, y; //坐标int hx,hy; //最高点坐标bool shoot; //判断烟花弹是不是发射状态DWORD t1, t2, dt; //烟花弹发射的速度IMAGE img[2]; //图片2张一明一暗的两张byte n : 1; //结构体位段变量 n 占用内存的一个位!}jet[NUM];//烟花struct FIRE{int r; //半径int maxr; //最大半径int x, y; //相对于窗口中心点的坐标int cenx, ceny; //相对于图片本身中心点的坐标int width, height;int xy[240][240]; //图片保存到一个像素矩阵。

bool show; //是否绽放bool draw; //是否绘制DWORD t1, t2, dt; //爆炸的速度}fire[NUM];void Init(int i);void Load();void Chose(DWORD& t1);void Shoot();void Show(DWORD* pem);在main.cpp写上如下代码:/**************************************************** ***************************************************** ****************表白浪漫烟花项目开发******************** ****************主讲人:三黑之毅************************ ****************最后修改:2019年3月20日**************** ***************************************************** ****************************************************/#include"main.h"int main(){//打开一个窗口 1200 800initgraph(1200, 800);srand((unsigned int)time(NULL));mciSendString(L"open ./fire/千年.mp3 alias bgm", 0, 0, 0);mciSendString(L"play bgm repeat", 0, 0, 0);DWORD t1 = GetTickCount();DWORD* pem = GetImageBuffer();for (int i = 0; i < NUM; i++){Init(i);}Load();BeginBatchDraw();while (1){Sleep(10);for (int clr = 0; clr < 1000; clr++){for (int j = 0; j < 2; j++){int px1 = rand() % 1200;int py1 = rand() % 800;if (py1 < 799){pem[py1 * 1200 + px1] = pem[py1 * 1200 + px1 + 1] = BLACK;}}}Chose(t1);Shoot();Show(pem);FlushBatchDraw();}return 0;}//初始化 13个void Init(int i){// 分别为:烟花中心到图片边缘的最远距离、烟花中心到图片左上角的距离 (x、y) 两个分量int r[15] = { 120, 120, 155, 123, 130, 147, 138, 138, 130, 135, 140, 132, 155, 145, 124 };int x[15] = { 120, 120, 110, 117, 110, 93, 102, 102, 110, 105, 100, 108, 110, 145,124 };int y[15] = { 120, 120, 85, 118, 120, 103, 105, 110, 110, 120, 120, 104, 85, 145, 124 };fire[i].width = 500;fire[i].height = 500;fire[i].maxr = r[i];fire[i].cenx = x[i];fire[i].ceny = y[i];fire[i].show = false;fire[i].t1 = GetTickCount();fire[i].dt = 5;fire[i].r = 0;//初始化烟花弹的部分数据jet[i].t1 = GetTickCount(); //定个时间点jet[i].dt = rand() % 10; //0-9 msjet[i].n = 0;jet[i].shoot = false; //都是没有发射的。

《C语言程序设计》课程设计报告

《C语言程序设计》课程设计报告

《C语言法式设计》之南宫帮珍创作课程设计陈说(2013— 2014学年第3学期)题目:C语言课程设计专业:软件工程班级:软件工程技术2班姓名学号:1307142225林燕萍指导教师:吴芸成果:计算机科学与技术系2014年6月23日目录一、课程设计的目的与要求 (1)二、方案实现与调试 (3)2.1 掷骰子游戏 (5)2.2 射击游戏 (7)2.3 计算存款本息之和 (8) (10)2.5 礼炮 (12)2.6 汽车加油 (14)2.7 年夜优惠 (16)2.8 金币 (19)三、课程设计分析与总结 (23)附录法式清单 (25)一、课程设计的目的与要求(含设计指标)C语言是一种编程灵活,特色鲜明的法式设计语言.C语言除基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的入手和编程能力,从应试课程转酿成实践工具.这是学习语言的最终目的.结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在实质上促使学生有更年夜进步,特编写了该《C语言法式设计任务书》 ,以在实训过程中给学生提供帮手.达到如下目的:1.在课程结束之前,让学生进一步了解C法式设计语言的编程功能;2.让学生扎实掌握C法式设计语言的相关知识;3.通过一些有实际意义的法式设计,使学生体会到学以致用,并能将法式设计的知识与专业知识有效地结合,更全面系统地了解行业知识.编写法式要求遵循如下基本要求:①模块化法式设计②锯齿型书写格式③必需上机调试通过二、方案实现与调试骰子游戏•题目内容的描述1) 两人轮流掷骰子,每次掷两个,每人最多掷10次.2) 将每人每次的分值累加计分3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数纷歧样时,计其中点数较小的骰子的点数.4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上.最后显示双方分数并判定优胜者.•输入数据类型、格式和内容限制和输出数据的说明数据类型:整型;内容限制:随机数的发生;输入数据结果:胜利的一方•主要模块的算法描述本算法的思路过程:首先要随机发生随机数,然后进行算法输出数值,执行条件判断输入结果,最后比力结果,判断胜利的一方.法式流程图图1 掷骰子游戏编纂过程中遇到的困难有:编程思路正确,可是无法正确编写出法式和编程过程缺乏.图2 掷骰子游戏•题目内容的描述在法式运行时屏幕上方第一行随机呈现一个符号,要求游戏者输入一个1-80之间的整数,当用户输入一个整数后,一个*立即从屏幕底真个该整数列向上移动,若移动到屏幕的顶端能撞上符号,则游戏者获胜;若没有撞上,则要求再输入一个整数,共允许输入5次,如果一直没有撞上,则认为游戏者输.提示:1)输入符号可以采纳printf("%c",'\1')2)显示*号向上移动:输出一些空行;输出*号;以循环的方式增加延时(for(i=0;i<100000;i++););clrscr()清屏重新绘制*号.•输入数据类型、格式和内容限制和输出数据的说明System(“cls”);清楚屏幕,•主要模块的算法描述本算法的思路过程:首先清楚屏幕,然后循环每行输出* ,依次循环,判断是否击中目标,最后 5次输入结束,或者击中目标结束.法式流程图图3 射击游戏•该法式在调试过程中呈现的问题是:该题中年夜体循环是以次数,还是循环的结果作为判断,弄不清楚图4 射击游戏2.3计算存款本息之和:以“存款利率”为关键字上网搜索目前我国整存整取分歧期限我国的银行存款利率,只计算一年(3%)、三年(4.25%)和五年(4.75%)三种期限.问题:1) 要求输入存钱的本金和期限,求到期能从银行获得的利息与本金合计.2)假设存款期限为三十年本金为10万,比力一年、三年和五年滚存三十年后的本息金额.*2.3.2输入数据类型、格式和内容限制和输出数据的说明1)数据类型:长整型;2)内容限制:键入本金与年限;3)输出数据:本息和PI•本算法的语言描述:输入限定之内的年份与存款金额,选择对应的年利率计算本息和法式流程图是否图5 计算存款本息之和•图6 计算存款本息之和开始初始化i,j,k,n,m=0,x=0输入存期i,本金j,滚利年限k,利率n m=m+i*j*k,x=x+ix<m结束图7 计算存款本息之和肇事逃逸•题目内容的描述某部闽DT的出租车交通肇事逃逸,现场无人看清后面的四位数字,但三位目击群众提供信息如下:1) 车牌号后两位相同;2) 车牌号前两位相同;3) 车牌号是一个整数的平方.请编程查出肇事逃逸车辆的车牌号.•输入数据类型、格式和内容限制和输出数据的说明1)数据类型:整型;2)内容限制:前两位相同,后两位相同,整数的平方; 3)输出数据:四位整数•主要模块的算法描述本算法的思路描述:前两位,后两位相同,则前两位用i暗示,后两位用均暗示,用k是100以内的两位整数,l暗示这个四位数,用循环语句依次判断结果适合公式否图8肇事逃逸•调试过程及实验结果i 与数字1比力像,结果招致混淆.图9 肇事逃逸2.5礼炮:•题目内容的描述鸣放礼炮起源于英国.据说400多年前英国海军用的是火炮.当战舰进入友好国家的港口之前,或在公海上与友好国家的舰船相遇时,为了暗示没有敌意,便把船上年夜炮内的炮弹统统放失落,对方的海岸炮舰船也同样做以暗示回报.这种做法以后就逐渐成为互致敬意的一种礼仪.由于那时最年夜的战舰装有年夜炮21门,所以鸣炮21响就成了一种最高礼节.有四艘战舰ABCD 开始鸣放礼炮各21响,已知A 战舰每隔5秒放一次,B 战舰每隔6秒放一次, C 战舰每隔7秒放一次, D 战舰每隔8秒放一次.假设各炮手对时间掌握非常准确,请问观众共可以听到几次礼炮声?•输入数据类型、格式和内容限制和输出数据的说明 •主要模块的算法描述本算法的思路过程:根据条件“A 战舰每隔5秒放一次,B 战舰每隔6秒放一次, C 战舰 否是否结束是否是否是图10 礼炮•法式在调试过程中呈现的问题是:编码时要注意“||”,“&&”图11 礼炮一辆汽车加满油后可行驶n公里.旅途中有若干个加油站.设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少.输入:第一行有2 个正整数N和K(1 <= N <= 100,1 <= K< = 100),暗示汽车加满油后可行驶N公里,且旅途中有K个加油站.接下来的1 行中,有K+1 个整数,暗示第K个加油站与第K-1 个加油站之间的距离.第0 个加油站暗示动身地,汽车已加满油.第K+1 个整数暗示第K个加油站与目的地的距离.输出:将编程计算出的最少加油次数输出.如果无法达到目的地,则输出 No Solution.(注意:No和Solution之间有一个空格).例如:输入:8 83 2 3 6 54 2 7 2输出:5•2.6.2输入数据类型、格式和内容限制和输出数据的说明1)数据类型:数组类型;2)内容限制:键入数据:3)用到的主要语句:循环条件判断;4)输出数据:加油次数(整型)•本算法的语言描述是:按题目要求输入数据;首先判断可行驶的路程是否足够汽车达到加油站;如果不能达到,则需要加油,在此处记录一次并循环;得出累计加油次数之和算得出结果. 法式流程图•实验中所遇到的困难是:循环条件判断毛病.图13 礼炮•中国移动推出最新的手机资费优惠方案,依照这个方案Tom 的手机每天消费1元,每消费K 元就可以获赠1元,一开始Tom 有M 元,问最多可以用几多天?输入的测试数据为一行,实例包括2个整数M, K (2 <= K <= M <= 1000).输出一个整数,暗示M 元可以用的天数.开始初始化:汽车加满油后可行驶N 公里,且旅途中有K 个加油站 输入K 个加油站距离汽车是否需要加油?输出加油次数记录加油次数是否达到终点?结束YESYESNONO10 10 1150 20 52•2.7.2输入数据类型、格式和内容限制和输出数据的说明整型,算法的应用,内容数字的限定;•法式流程图否是否图14–简要的语言描述思考数据间的关系;分析K 与天数的关系;按M 值递加的方式运算; •实验中所遇到的困难是:没有注意到题目中给定的限制范围.注意年夜小写图15•2.8.1题目内容的描述国王用金币奖励他忠诚的侍从.第一天侍从工作结束后,国王奖励了他开始 M,K, i=0(2<=K<=M<=1000) M>0i++;M=M-1; i%K==0 M=M+1可用天数i结束一个金币;接着的两天侍从工作中(第二天,第三天)的每一天,国王奖励了他两个金币;接着的三天侍从工作中(第四天,第五天,第六天)的每一天,国王奖励了他三个金币;接着的四天侍从工作中(第七天,第八天,第九天,第十天)的每一天,国王奖励了他四个金币.这种奖励的模式将是固定不变的,即在N天侍从工作中的每一天,国王将奖励他N个金币;接着的N+1天的侍从工作中的每一天,国王将奖励他N+1个金币.要求在给定的天数时,你的法式能够统计国王总共奖励了侍从几多金币. •2.8.2输入数据类型、格式和内容限制和输出数据的说明整型,算法的应用,内容数字的限定;•2.8.3主要模块的算法描述–以法式流程图的方式给出.–简要的语言描述思考数据间的关系;分析天数与获得金币的关系(类金字塔);进行总求和;•2.8.4调试过程及实验结果实验中所遇到的困难是:循环条件的出口判断不明确;求和处置不简约;三、课程设计分析与总结由于上学期在语言的学习方面还有很多缺乏之处,因此,这次课程设计显得特别费劲,很多缺乏都流露了出来.不外最终还是基本完成了此次课程设计的内容.在各个实验中解决问题的基本流程是:分析问题→分析解决问题的基本流程→选择合适的算法语句→书写法式→调试修改→按要求书写实验陈说.在这些过程中,我认为分析问题的解决流程最为重要,分析好解决流程之后,就可以清楚的知道自己这一步要干什么,下一步要干什么,思路就显得十分清楚,依照这个流程解决问题是我感觉做得好的一面.不外也有很多缺乏,例如:好久没碰C语言了,for,while之类的循环语句的基本功能都模糊了,在选择运用时还要在课本、网络上熟悉这些内容,还有一点就是自己对函数、模块化的思想掌握不够,依照实验要求需运用模块化的方式来解决问题,自己却很少使用这种思想,这就是实验中的缺乏之处.总而言通过这次5天的课程设计我进一步了解C法式设计语言的编程功能,握C法式设计语言的相关知识,体会到学以致用,并能将法式设计的知识与专业知识有效地结合,更全面系统地了解行业知识.众多缺乏之处我会课余时间进一步加固,力争将这门基础课真正的学好、用好,摆正思想,为以后的专业课的学习年夜好基础!最后感谢谢老师的一而再再而三的严格要求及耐心指导,感谢感谢同学们的帮手,谢谢你们!附录法式清单2.1掷骰子游戏:#include <stdio.h>#include <stdlib.h>#include <time.h>void main(){int i,j,k,b,n,m,add1=0,add2=0;srand( (unsigned)time( NULL ) ); //生成随机数发生器for(i=1; i<11; i++){for(b=1;b<60000000;b++);printf("第一个人第%d次投出的数\n",i);j=rand()%6+1;printf("%d\n",j);k=rand()%6+1;printf("%d\n",k);if(k==j==6) add1=add1+8;if(k==j==5||k==j==4||k==j==3||k==j==2||k==j==1)add1=add1+7;elseif(k>j)add1=add1+j;elseadd1=add1+k;printf("第二个人第%d次投出的数\n",i);m=rand()%6+1;printf("%d\n",m); //rand()发生随机数 - 12 -n=rand()%6+1;printf("%d\n",n);if(n==6||m==6) add2=add2+8;if(n==m==5||n==m==4||n==m==3||n==m==2||n==m==1)add2=add2+7;elseif(n>m)add2=add2+m;elseadd2=add2+n;if(i==6)if(add1==2*add2||add2==2*add1)i=10;}printf("第一个人分值累加计分%d\n",add1);printf("第二个人分值累加计数%d\n",add2);if(add1>add2)printf("第一个人胜利");if(add2>add1)printf("第二个人胜利");#include<stdio.h>#include<stdlib.h>#include<time.h>void main(){int i,j,n,t,m;long int k;printf("*****************Welcome*****************");printf("\nGame Begin:\n");srand((unsigned)time(NULL));n=rand()%80+1;for(i=0;i<n;i++)printf(" ");printf("%c\n",'\1');for(m=0;m<5;m++){scanf("%d",&t);for(j=10;j>0;j--){system("cls");for(i=0;i<80;i++){if(i==n) printf("%c",'\1');else printf(" ");}for(i=1;i<j;i++)printf("\n");for(k=0;k<80;k++){if(k==t) printf("*");else printf(" ");}for(k=0;k<100000;k++);}if(t==n){printf("Your Winner\n");break;}if(m==4)printf("You Lose\n");}}#include <stdio.h>void main(){float m,n,PI;//界说m存款本金,n存款年限,printf("Please input the principal:");scanf("%f",&m);printf("Please input the years:");scanf("%f",&n);if(n==1){PI=m*(1+0.03*1);}else if(n==3){PI=m*(1+0.425*3);}else if(n==5){PI=m*(1+0.475*5);}printf("You save:%f\n",PI);}#include<stdio.h>#include<stdlib.h>main(){float i,save,total,profit,term;while(1){printf("total=");scanf("%f",&total);if(total==0){break;}printf("Please input the principal:"); scanf("%f",&save);printf("Please input the years:");scanf("%f",&term);if(term==5){for(i=1;i<=30;i=i+term){save=0.0475*save*term+save;}printf("You save:%f\n",save);}else if(term==3){for(i=1;i<=30;i=i+term){save=0.0425*save*term+save;}printf("You save:%f\n",save);}else{for(i=1;i<=30;i=i+term){save=0.03*save*term+save;}printf("You save:%f\n",save);}}}#include<stdio.h>#include<stdlib.h>main(){int i,j,k,c;for(i=0;i<=9;i++){for(j=0;j<=9;j++){c=1000*i+100*i+10*j+j;for(k=1;k<=(c/2);k++){if((k*k)==c)printf("肇事逃逸车辆的车牌号为:%d\n",c);}}}}#include<stdio.h>#include<stdlib.h>main(){int i,j=1;for(i=1;i<=168;i++){if(i<=100){if((i%5==0)||(i%6==0)||(i%7==0)||(i%8==0)) j=j+1;}else if(i<=120 && i>100){if((i%6==0)||(i%7==0)||(i%8==0)) j=j+1;}else if(i<=140 && i>120){if((i%7==0)||(i%8==0)) j=j+1;}else{if(i%8==0) j=j+1;}}printf("%d\n",j);}#include<stdio.h>void main(){int K,N,i,j,i[999],x=0,y=0; //i暗示第几个加油站;j为第K个加油站与第K-1个加油站直接的距离;x暗示总距离;*/printf("输入N K:");scanf("%d%d",&N,&K);for(i=0;i<=K;i++){scanf("%d",&j);l[i]=j;}for(i=0;i<=K;i++){if(N<l[i]){printf("No Solution.\n");break;}elsex=x+l[i];if(N<x){y++;x=l[i];}if(i==K)printf("输出最少加油次数:%d\n",y);}}#include<stdio.h>main(){int M,K,i=0;printf("Please input M and K\n(2<=K<=M<=1000)\n");scanf("%d%d",&M,&K);if(2<=K<=M<=1000){while(M>0){i++;M=M-1;if(i%K==0) M=M+1;}printf("可用天数%d\n",i);}else{printf("Input is error");}}#include<stdio.h>#include<stdlib.h>main(){int i,j,money=0,sum=0,days;printf("please input days=");scanf("%d",&days);for(i=1;i<=days;i++){for(j=1;j<=i;j++){money=money+i;sum=sum+1;if(sum==days){printf("%d\n",money);break;}}}}。

祝福烟花设计c语言课程设计

祝福烟花设计c语言课程设计

祝福烟花设计 c语言课程设计一、教学目标本节课的教学目标是让学生掌握C语言中烟花效果的设计方法。

通过本节课的学习,学生应能理解烟花效果的原理,运用C语言实现简单的烟花设计。

具体的教学目标如下:1.知识目标:(1)了解烟花效果的原理及实现方法。

(2)掌握C语言中图形界面的绘制方法。

(3)熟悉C语言的编程技巧。

2.技能目标:(1)能够运用C语言实现简单的烟花效果。

(2)能够独立完成烟花设计的编程任务。

3.情感态度价值观目标:(1)培养学生对计算机编程的兴趣和热情。

(2)培养学生独立思考、解决问题的能力。

二、教学内容本节课的教学内容主要包括以下几个部分:1.烟花效果的原理及实现方法。

2.C语言中图形界面的绘制方法。

3.C语言的编程技巧。

4.烟花设计的实践操作。

具体的教学内容安排如下:1.第1-2课时:讲解烟花效果的原理及实现方法,让学生了解烟花效果的产生过程。

2.第3-4课时:教授C语言中图形界面的绘制方法,让学生掌握绘制基本图形的能力。

3.第5-6课时:讲解C语言的编程技巧,提高学生的编程水平。

4.第7-8课时:进行烟花设计的实践操作,让学生运用所学知识独立完成烟花设计的编程任务。

三、教学方法为了提高学生的学习兴趣和主动性,本节课将采用以下教学方法:1.讲授法:讲解烟花效果的原理、C语言的编程技巧等理论知识。

2.案例分析法:分析典型的烟花设计案例,让学生了解实际应用。

3.实验法:让学生动手实践,完成烟花设计的编程任务。

4.讨论法:鼓励学生相互交流、讨论,提高解决问题的能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选用权威、实用的C语言教材。

2.参考书:提供相关的编程参考书籍,方便学生课后自学。

3.多媒体资料:制作精美的PPT,直观展示烟花效果的原理及实现过程。

4.实验设备:为学生提供充足的电脑设备,确保每位学生都能进行实践操作。

五、教学评估为了全面、客观地评估学生的学习成果,本节课的教学评估将采取以下方式:1.平时表现:关注学生在课堂上的参与程度、提问回答等情况,记录学生的表现,占总评的30%。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告书设计题目烟花绽放
系别计算机工程系
专业计算机科学与技术
班级
姓名
指导教师
设计任务下达日期2011年 12 月 24 日
设计时间2011年12月26日至 2010年12月30日
课程设计任务书
一、目的和意义
本课程设计是《C语言程序设计》课程的后继教学环节, 通过研究C语言中图形编程技术或者声音控制等其它方面的多媒体编程技术,一方面拓展学生在这些领域的C语言知识,另一方面使学生在运用所学理论知识进行实践开发,更好的培养学生综合学习能力和实践能力。

本次课程设计学生可以根据喜好,可以利用复杂的数据类型实现成绩管理系统等小型的综合应用程序。

二、题目(可从下面题目中任选一个)
1、C语言的图形编程应用
设计实现如菜单、图形的显示,再如动画和小游戏。

2、简易电子琴模拟程序的实现
为实现在键盘模拟电子琴设计的程序。

由学生自行设计并且实现。

3、成绩管理程序
学生本人设计具体方案,然后改进和编码实现。

三、课程设计报告书应包括的主要内容
1、介绍概要的思路和设计方案,程序的总体功能和模块划分。

2、主要算法的介绍及流程图,主要功能的实现手段的说明文档。

3、对于有设想但最终未实现的功能的大致编程思路的阐述和设计过程中的启发。

四、进度要求
1、设计时间:2011年12月19日至2011年12月25日
2、编写课程设计报告书:2011年12月26日至2011年12月29日
3、提交报告及答辩时间:2011年12月30日
专科
四、进度要求
1、设计时间:2011年12月26日至2011年12月28日
2、编写课程设计报告书:2011年12月29日
3、提交报告及答辩时间:2011年12月30日
目录
一.课程设计目的: (3)
二.课程设计原因 (4)
三.课程设计思路以及方案 (4)
1.基础思路 (4)
2总体功能 (4)
四.课程设计中涉及的知识点 (3)
附录:源代码 (3)
一.课程设计目的:
熟练掌握条件语句、循环、数组、函数操作,将本课程所学的知识合理地运用于实践当中。

了解一些书上没有的函数及使用方法。

为以后的用C语言乃至其他设计语言解决实际问题打下了一个良好的基础。

二.课程设计原因
对图形图像的操作加以熟悉以掌握和应用
三.课程设计思路以及方案
1.基础思路
以黑色为背景色作为夜空,用两个圆嵌套填充颜色画一个月亮,用数组和for循环按角度画出星星。

在固定的几个点上烟花逐渐循环放大。

2功能描述
夜空中悬挂着月亮和零星的几颗星星,烟花逐个绽放而且越变越大。

四.课程设计中涉及的知识点
程序用到了for循环语句、数组、setcolor、setfillstyle、floodfill函数、ellipse、circle、line函数、putpixel、delay 以及rand等函数,还有宏定义和函数调用。

动画效果是有for循环实现的大小和色彩不断变化的圆。

附录:源代码
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <math.h>
#include <graphics.h>
#include <bios.h>
#include <stdlib.h>
#define PI 3.14159
void moon()
{
int x=50,y=50,n=30; setcolor(YELLOW); setfillstyle(1,YELLOW); ellipse(x,y,0,360,n,n); Fllodfill(x,y,YELLOW); circle(x,y,n);
circle(x+n/2,y,n);
}
void star(int x, int y)
{
int i,a;
int n=5;
int x1[5],y1[5],x2[5],y2[5];
setcolor(YELLOW);
for (i=0;i<5;i++)
{
x1[i]=x+n*cos(i*72*PI/180);
y1[i]=y+n*sin(i*72*PI/180);
x2[i]=x+n/2*cos(i*72*PI/180+PI/5);
y2[i]=y+n/2*sin(i*72*PI/180+PI/5); }
for(i=0;i<5;i++)
{
a=i+1;
if(a>4) a=0;
line(x1[i],y1[i],x2[i],y2[i]);
line(x2[i],y2[i],x1[a],y1[a]);
}
}
void drawstar()
{
int a[]={70,250,190,400,150}; int b[]={43,27,38,79,90},i;
setfillstyle(1,14);
for(i=0;i<5;i++)
{
star(a[i],b[i]);
floodfill(a[i],b[i],YELLOW);
}
}
void starflower()
{
int i=0,j,n=60,n1=2;
int x=200,y=200,size=100;
int cover=0;
int delay1=5000;
int wid,hei;
int px,py;
int color=9;
while(!kbhit())
{
if(i<size)
{
for(j=0;j<n;j++)
{
px=x+i*cos(j*360/n*PI/180); py=y+i*sin(j*360/n*PI/180); putpixel(px,py,rand()%16); putpixel(px-1,py,color); putpixel(px,py+1,color); putpixel(px+1,py-1,YELLOW); putpixel(px,py-1,YELLOW); putpixel(px+1,py,RED); putpixel(px+1,py+1,RED);
}
}
if(i>size && cover<size)
{
setcolor(BLACK);
circle(x,y,cover++);
delay1=1000;
}
if(cover==size)
{
i=0;
x=50+rand()%550;
y=rand()%400;
cover=0;
color=rand()%16;
size=50+rand()%250;
delay1=10000; clearviewport();
drawstar();
moon();
}
i+=n1;
delay(delay1);
}
}
main()
{
int i,j,k;
int gdriver = DETECT, gmode;
registerbgidriver(EGA VGA_driver);
initgraph(&gdriver,&gmode,"");
drawstar();
moon();
starflower();
Closegraph();
}
参考文献:
[1] 王娣安剑孙秀梅《C语言程序开发范例宝典(1CD)》出版社:人民邮
电出版社ISBN:978-7-115-21818-6 出版时间:2010-01-01
[2] 王敬华, 林萍,陈静. C语言程序设计教程[M]. 北京: 清华大学出版社, 2005.10:141~167
[3] 谭浩强. C程序设计语言[M],. 北京: 机械工业出版社, 2003.4:205-256
[4]李邦几胡金桂王敬华. 最新C语言实用教程[M]. 北京: 化学工业出版社, 1996.3:35~43 66~97 132~148
[5] 李军民. 新编C语言程序设计教程(第二版)[M]. 西安: 西安电子科技大学出版社, 2005.08:68~93 148~171
指导教师评语
成绩评定:
指导教师签字:
年月日。

相关文档
最新文档