Графика, движение звезд - 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

Объяснение кода листинга программы

Вот что получилось:

  1. void game() Функция начинается с инициализации графического режима и очистки экрана. Затем она устанавливает цвет заливки и контура, а также стиль текста. С помощью функции fillellipse на экране рисуется звезда. Затем цвет контура меняется на 4, и с помощью функции circle рисуются остальные звезды. Функция game заключается в цикле, который может быть бесконечным, поэтому он прерывается только при нажатии клавиши.
  2. void help() Эта функция начинается с очистки экрана и установки цвета текста и фона. Затем на экране отображается текст с инструкциями.
  3. void exit() Эта функция закрывает графический режим и завершает работу программы.
  4. void main() Функция main начинается с инициализации графического режима и очистки экрана. Затем на экране отображаются кнопки Play, Help и Exit. В бесконечном цикле программа ожидает нажатия клавиши. При нажатии клавиши Play вызывается функция game. При нажатии клавиши Help вызывается функция help. При нажатии клавиши Exit программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы