C 언어로 역동적인 불꽃놀이를 작성하는 방법
C 언어로 동적 불꽃놀이를 작성하는 방법: 먼저 메뉴 인터페이스를 그려 텍스트를 표시한 다음 불꽃놀이의 상승 단계와 폭발 단계를 설정하고 마지막으로 데이터를 초기화하고 리소스 맵을 로드합니다. 무작위로 임의의 숫자를 실행합니다.
C 언어로 동적 불꽃놀이를 작성하는 방법:
효과 표시
동적 다이어그램
전체 프레임워크
/***************************************** * 项目名称:浪漫烟花 * 项目描述:贴图 * 项目环境:vs2019 * 生成日期:2020-9-7 * 作者所属:追梦 *****************************************/#include<graphics.h>#include<stdio.h>#include<stdlib.h>#include<windows.h>#define NUM 10 //烟花弹个数,烟花//烟花弹struct jet{ int x, y; //烟花弹坐标 int hx, hy; //烟花弹最高点坐标 bool shoot; //烟花弹是否处于发射状态 DWORD t1, t2, dt; //发射时间 引爆时间 间隔时间 IMAGE img[2]; //2张图片 一明一暗 01下标 byte n : 1; //C结构体 位段 //n 变量 1个位 0,1 n++ 0,1,0,1}jet[NUM]; //烟花弹个数//烟花struct Fire{ int x, y; //烟花的坐标 int r; //烟花的半径 int max_r; //烟花的最大半径 int cen_x, cen_y; //中心距左上角的距离 int width, height; //长宽 int xy[240][240]; //重要,像素,矩阵 bool draw; //画出 bool show; //显示 DWORD t1, t2, dt; //发射时间 引爆时间 间隔时间}fire[NUM];//初始化函数void FireInit(){}//加载资源void Load(){}//选择烟花弹void ChoiceJet(){}//判断发射void Shoot(){}//显示烟花void ShowFire(){}//菜单界面void welcome(){}//主函数int main(){ //初始界面(1000,600) initgraph(1000, 600); welcome(); Load(); while (1) { ChoiceJet(); Shoot(); ShowFire(); } system("pause"); return 0;}</windows.h></stdlib.h></stdio.h></graphics.h>
논리적 관계
먼저 메뉴 인터페이스 표시 텍스트를 그립니다. 불꽃놀이에는 불꽃놀이와 불꽃놀이 껍질의 구조를 정의하는 상승 단계와 폭발 단계가 있습니다.
불꽃놀이: 좌표 위치, 폭발 반경, 최대 반경, 중심에서 왼쪽 상단 모서리까지의 거리, 길이 및 너비, 픽셀, 시간 등
불꽃놀이: 좌표 위치, 최고점, 발사 여부, 시간, 횟수 등
데이터를 초기화합니다. 리소스 맵을 로드합니다. 무작위 실행 횟수는 무작위입니다.
소스 코드
/***************************************** * 项目名称: 浪漫烟花 * 项目描述:贴图 * 项目环境:vs2019 * 生成日期:2020-9-7 * 作者所属:追梦 *****************************************/#include<graphics.h>#include<time.h>#include<stdlib.h>#include<math.h>#include<windows.h>#pragma comment(lib,"winmm.lib")#define NUM 10 //烟花弹个数,烟花#define PI 3.1415925//烟花弹struct jet{ int x, y; //烟花弹坐标 int hx, hy; //烟花弹最高点坐标 bool shoot; //烟花弹是否处于发射状态 DWORD t1, t2, dt; //发射时间 引爆时间 间隔时间 IMAGE img[2]; //2张图片 一明一暗 01下标 byte n : 1; //C结构体 位段 //n 变量 1个位 0,1 n++ 0,1,0,1}jet[NUM]; //烟花弹个数//烟花struct Fire{ int x, y; //烟花的坐标 int r; //烟花的半径 int max_r; //烟花的最大半径 int cen_x, cen_y; //中心距左上角的距离 int width, height; //长宽 int xy[240][240]; //重要,像素,矩阵 bool draw; //画出 bool show; //显示 DWORD t1, t2, dt; //发射时间 引爆时间 间隔时间}fire[NUM];</windows.h></math.h></stdlib.h></time.h></graphics.h>
초기화 기능
void FireInit(int i){ //初始化烟花弹 jet[i].t1 = GetTickCount(); //GetTickCount()返回从操作系统启动到当前所经过的毫秒数。使用前包含windows.h。 jet[i].shoot = false; //未发射 jet[i].dt = 10; //上升时间 jet[i].n = 0; //初始化烟花 fire[i].show = false; //未引爆 fire[i].r = 0; fire[i].dt = 5; //上升时间 fire[i].t1 = GetTickCount(); fire[i].max_r = rand() % 50 + 100; //100-149 fire[i].cen_x = rand() % 30 + 80; //中心距左上角的距离 fire[i].cen_y = rand() % 30 + 80; // fire[i].width = 240; //宽 fire[i].height = 240; //长}
load
void Load(){ //加载烟花弹 IMAGE jetimg; loadimage(&jetimg, L"./fire/shoot.jpg", 200, 50); SetWorkingImage(&jetimg); for (int i = 0; i <p>폭죽 껍질 선택</p><pre class="brush:php;toolbar:false">void ChoiceJet(DWORD& t1){ DWORD t2 = GetTickCount(); if (t2 - t1 > 100) //烟花弹出现的时间间隔100ms { //烟花弹个数 int i = rand() % 10; //不处于发射状态 if (jet[i].shoot == false && fire[i].show == false) { //烟花弹 jet[i].x = rand() % 1000; jet[i].y = rand() % 100 + 450; //450-549 jet[i].hx = jet[i].x; jet[i].hy = rand() % 300; //0-299 jet[i].shoot = true; //发射状态 putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n], SRCINVERT); } t1 = t2; }}
판단 실행
void Shoot(){ for (int i = 0; i = jet[i].dt && jet[i].shoot == true) { putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n], SRCINVERT); if (jet[i].y >= jet[i].hy) { jet[i].n++; //闪烁 jet[i].y -= 5; } putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n], SRCINVERT); if (jet[i].y <pre class="brush:php;toolbar:false">//显示烟花void ShowFire(DWORD* pMem){ int drt[16] = { 5, 5, 5, 5, 5, 10, 25, 25, 25, 25, 55, 55, 55, 55, 55, 65 }; for (int i = 0; i = fire[i].dt && fire[i].show == true) { if (fire[i].r = fire[i].max_r - 1) { fire[i].draw = false; FireInit(i); } fire[i].t1 = fire[i].t2; // 如果该号炮花可爆炸,根据当前爆炸半径画烟花,颜色值接近黑色的不输出。 if (fire[i].draw) { for (double a = 0; a 0 && x1 0 && 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 0 && yy <p>메뉴 인터페이스</p><pre class="brush:php;toolbar:false">void welcome(){ setcolor(YELLOW); for (int i = 0; i <p>주요 기능</p><pre class="brush:php;toolbar:false">int main(){ //初始界面(1000,600) initgraph(1000, 600); //初始化种子 srand((unsigned int)time(NULL)); //音乐 爱的翅膀 mciSendString(L"open ./fire/bk1.mp3 alias music", 0, 0, 0); //send(发送) string(字符串) mciSendString(L"play music", 0, 0, 0); //其它音乐类型 wav PlaySound() //0,0,0 音乐播放器时:播放设备,快进设备 快退 暂停 welcome(); DWORD t1 = GetTickCount(); DWORD* pMem = GetImageBuffer(); for (int i = 0; i <h1 id="material">material</h1> <p>사진 두 장 Fire 폴더 아래에 배치됩니다. 음악은 음악을 찾아서 넣으면 연주가 됩니다. <br><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/052/1cf72c8ff7116152eb2b0bd02d2b2411-3.bmp" class="lazy" alt="C 언어로 역동적인 불꽃놀이를 작성하는 방법"><br><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/052/e224e28aabb9f24626bf28cc71eab482-4.jpg" class="lazy" alt="C 언어로 역동적인 불꽃놀이를 작성하는 방법"></p><h1 id="요약">요약</h1><p>그래픽 라이브러리를 설치하고 관련 지식을 이해해야 합니다. 재료 경로를 올바르게 작성해야 합니다. 그렇지 않으면 아무런 효과가 없습니다. </p><link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/markdown_views-10218d227c.css" rel="stylesheet"><link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/style-6aa8c38f9a.css" rel="stylesheet"><svg xmlns="http://www.w3.org/2000/svg" style="max-width:90%"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg><blockquote><p><strong>관련 학습 권장사항: </strong><a href="https://www.php.cn/course/list/37.html" target="_blank"><strong>C 비디오 튜토리얼</strong></a></p></blockquote>
위 내용은 C 언어로 역동적인 불꽃놀이를 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









C 언어 데이터 구조 : 트리 및 그래프의 데이터 표현은 노드로 구성된 계층 적 데이터 구조입니다. 각 노드에는 데이터 요소와 하위 노드에 대한 포인터가 포함되어 있습니다. 이진 트리는 특별한 유형의 트리입니다. 각 노드에는 최대 두 개의 자식 노드가 있습니다. 데이터는 structtreenode {intdata; structtreenode*왼쪽; structReenode*오른쪽;}을 나타냅니다. 작업은 트리 트래버스 트리 (사전 조정, 인 순서 및 나중에 순서) 검색 트리 삽입 노드 삭제 노드 그래프는 요소가 정점 인 데이터 구조 모음이며 이웃을 나타내는 오른쪽 또는 무의미한 데이터로 모서리를 통해 연결할 수 있습니다.

파일 작동 문제에 대한 진실 : 파일 개방이 실패 : 불충분 한 권한, 잘못된 경로 및 파일이 점유 된 파일. 데이터 쓰기 실패 : 버퍼가 가득 차고 파일을 쓸 수 없으며 디스크 공간이 불충분합니다. 기타 FAQ : 파일이 느리게 이동, 잘못된 텍스트 파일 인코딩 및 이진 파일 읽기 오류.

C에서 카운트 다운을 출력하는 방법? 답변 : 루프 명령문을 사용하십시오. 단계 : 1. 변수 n을 정의하고 카운트 다운 번호를 출력에 저장합니다. 2. n이 1보다 작을 때까지 n을 지속적으로 인쇄하려면 while 루프를 사용하십시오. 3. 루프 본체에서 n의 값을 인쇄하십시오. 4. 루프가 끝나면 n을 1 씩 빼기 위해 다음 작은 상호 상호를 출력합니다.

C 언어 기능의 반환 값 유형에는 int, float, double, char, void 및 포인터 유형이 포함됩니다. INT는 정수를 반환하는 데 사용되며 플로트 및 더블은 플로트를 반환하는 데 사용되며 Char는 문자를 반환합니다. 무효는 함수가 값을 반환하지 않음을 의미합니다. 포인터 유형은 메모리 주소를 반환하고 메모리 누출을 피하기 위해주의하십시오. 구조 또는 컨소시엄은 여러 관련 데이터를 반환 할 수 있습니다.

C 언어 함수는 재사용 가능한 코드 블록이며 처리를위한 매개 변수를 수신하며 결과를 반환합니다. 스위스 육군 나이프와 유사하며 강력하며 신중하게 사용해야합니다. 함수에는 형식 정의, 매개 변수, 반환 값 및 기능 본체와 같은 요소가 포함됩니다. 고급 사용법에는 기능 포인터, 재귀 함수 및 콜백 기능이 포함됩니다. 일반적인 오류는 유형 불일치이며 프로토 타입을 선언하는 것을 잊는 것입니다. 디버깅 기술에는 변수 인쇄 및 디버거 사용이 포함됩니다. 성능 최적화는 인라인 함수를 사용합니다. 기능 설계는 단일 책임의 원칙을 따라야합니다. C 언어 기능의 숙련도는 프로그래밍 효율성과 코드 품질을 크게 향상시킬 수 있습니다.

알고리즘은 문제를 해결하기위한 일련의 지침이며 실행 속도 및 메모리 사용량은 다양합니다. 프로그래밍에서 많은 알고리즘은 데이터 검색 및 정렬을 기반으로합니다. 이 기사에서는 여러 데이터 검색 및 정렬 알고리즘을 소개합니다. 선형 검색은 배열 [20,500,10,5,100,1,50]이 있으며 숫자 50을 찾아야한다고 가정합니다. 선형 검색 알고리즘은 대상 값이 발견되거나 전체 배열이 통과 될 때까지 배열의 각 요소를 하나씩 점검합니다. 알고리즘 플로우 차트는 다음과 같습니다. 선형 검색의 의사 코드는 다음과 같습니다. 각 요소를 확인하십시오. 대상 값이 발견되는 경우 : true return false clanue 구현 : #includeintmain (void) {i 포함

C 언어 기능은 재사용 가능한 코드 블록입니다. 입력, 작업을 수행하며 결과를 반환하여 모듈 식 재사성을 향상시키고 복잡성을 줄입니다. 기능의 내부 메커니즘에는 매개 변수 전달, 함수 실행 및 리턴 값이 포함됩니다. 전체 프로세스에는 기능이 인라인과 같은 최적화가 포함됩니다. 좋은 기능은 단일 책임, 소수의 매개 변수, 이름 지정 사양 및 오류 처리 원칙에 따라 작성됩니다. 함수와 결합 된 포인터는 외부 변수 값 수정과 같은보다 강력한 기능을 달성 할 수 있습니다. 함수 포인터는 함수를 매개 변수 또는 저장 주소로 전달하며 함수에 대한 동적 호출을 구현하는 데 사용됩니다. 기능 기능과 기술을 이해하는 것은 효율적이고 유지 가능하며 이해하기 쉬운 C 프로그램을 작성하는 데 핵심입니다.

C 언어 처리 파일에 대한 팁 문제 해결 C 언어로 파일을 처리 할 때 다양한 문제가 발생할 수 있습니다. 다음은 일반적인 문제와 해당 솔루션입니다. 문제 1 : 파일 코드를 열 수 없음 : 파일*fp = fopen ( "myfile.txt", "r"); if (fp == null) {// 파일 열기 실패} 이유 : 파일 경로 오류 파일이 존재하지 않으면 파일을 확인하여 파일에 실패한 문제 : 파일 읽기 문제 2 : 코드를 확인하십시오. charbuffer [100]; size_tread_bytes = fread (버퍼, 1, siz
