Графика, движение звезд - C (СИ)
Формулировка задачи:
Скажите пожалуйста как нарисовать затмение луны слева направо,(т.е желтый круг-луна, и ее медленно закрывает и потом открывает круг другого цвета) подскажите пожалуйста срочно нужно
Решение задачи: «Графика, движение звезд»
textual
Листинг программы
#include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <dos.h> #include <string.h> void game(){ cleardevice(); int i; setbkcolor(1); setcolor(14); setfillstyle(1,14); fillellipse(320,230,50,50); setcolor(4); circle(300,215,8); circle(300,215,9); circle(302,260,11); circle(302,260,10); circle(302,260,9); circle(340,200,10); circle(340,200,9); circle(350,250,8); circle(350,250,7); circle(315,235,5); circle(315,235,4); for (i=0;i<=100;i++) putpixel(rand()%640,rand()%480,14); setcolor(1); for (i=0;i<=100;i=i+2) { setfillstyle(1,1); fillellipse(220+i,230,50,50); delay(30); } for (i=0;i<=100;i=i+2) { setcolor(14); setfillstyle(1,14); fillellipse(320,230,50,50); setcolor(4); circle(300,215,8); circle(300,215,9); circle(302,260,11); circle(302,260,10); circle(302,260,9); circle(340,200,10); circle(340,200,9); circle(350,250,8); circle(350,250,7); circle(315,235,5); circle(315,235,4); setcolor(1); setfillstyle(1,1); fillellipse(320+i,230,50,50); delay(30); } setcolor(12); settextstyle(0,0,2); outtextxy(50,440,"Exit program please press any key"); getch(); cleardevice(); setfillstyle(1,2); bar(0,0,640,480);} void help() { cleardevice(); setcolor(12); settextstyle(0,0,2); setbkcolor(2); outtextxy(500,10," HELP"); outtextxy(200,40,"‡ ⬥*ЁҐ ‹г*л. "); outtextxy(0,60,"?§®Ўа §Ёвм * нЄа *Ґ §ўҐ§¤*®Ґ *ҐЎ®,"); outtextxy(0,80,"Ї®«*го ‹г*г Ё * ¤ўЁЈ ойгобп вҐ*м ‡Ґ¬«Ё;"); setcolor(12); settextstyle(0,0,2); outtextxy(50,440,"Exit program please press any key"); getch(); cleardevice(); } void exit(){ closegraph();} void main() { int k=0,y1=100,y2=200; int d=DETECT,m; initgraph(&d,&m,"C:\\BORLANDC\\BGI"); setfillstyle(1,2); bar(0,0,640,480); settextstyle(9,0,1); outtextxy(205,30,"ZATMENYE LUNY"); setcolor(6); rectangle(200,100,440,200); outtextxy(295,135,"Play"); setcolor(6); rectangle(198,98,442,202); setcolor(6); rectangle(200,100+120,440,200+120); outtextxy(280,245,"Help"); setcolor(6); rectangle(200,340,440,440); outtextxy(300,370,"Exit"); int a,q=0; for(;;){ setcolor(1); settextstyle(9,0,1); outtextxy(205,30,"ZATMENYE LUNY"); setcolor(6); rectangle(200,100,440,200); outtextxy(295,135,"Play"); setcolor(6); rectangle(198,98,442,202); setcolor(6); rectangle(200,100+120,440,200+120); outtextxy(280,245,"Help"); setcolor(6); rectangle(200,340,440,440); outtextxy(300,370,"Exit"); if(kbhit()){a=getch(); switch(a){ case 80: setcolor(2); rectangle(198,y1+k*120-2,442,y1+k*120+102); setcolor(6); rectangle(200,y1+k*120,440,y2+k*120); setcolor(6);if (k==2) k=0; else k++; rectangle(198,y1+k*120-2,442,y1+k*120+102); break; case 72: setcolor(2); rectangle(198,y1+k*120-2,442,y1+k*120+102); setcolor(6); rectangle(200,y1+k*120,440,y2+k*120); setcolor(6);if (k==0) k=2; else k--; rectangle(198,y1+k*120-2,442,y1+k*120+102); break; case 27:q=1;break; case 13: switch(k){ case 2: q=1; exit();break; case 1:help();break; case 0: game(); break;} break;} if(q==1) break; } setcolor(random(10)); rectangle(200,y1+k*120,440,y2+k*120
Объяснение кода листинга программы
Вот что получилось:
- void game()
Функция начинается с инициализации графического режима и очистки экрана. Затем она устанавливает цвет заливки и контура, а также стиль текста. С помощью функции
fillellipse
на экране рисуется звезда. Затем цвет контура меняется на 4, и с помощью функцииcircle
рисуются остальные звезды. Функцияgame
заключается в цикле, который может быть бесконечным, поэтому он прерывается только при нажатии клавиши. - void help() Эта функция начинается с очистки экрана и установки цвета текста и фона. Затем на экране отображается текст с инструкциями.
- void exit() Эта функция закрывает графический режим и завершает работу программы.
- void main()
Функция
main
начинается с инициализации графического режима и очистки экрана. Затем на экране отображаются кнопкиPlay
,Help
иExit
. В бесконечном цикле программа ожидает нажатия клавиши. При нажатии клавишиPlay
вызывается функцияgame
. При нажатии клавишиHelp
вызывается функцияhelp
. При нажатии клавишиExit
программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д