- •2.Работа с двумерными массивами
- •1 N
- •1 M
- •2.3 Код программы
- •2.4.Запуск программы
- •3.Работа с графическими фигурами
- •3.1. Алгоритм решения задачи
- •3.2. Описание программы
- •3.3. Код программы
- •3.4. Запуск программы
- •4.Создание игры
- •4.2 Код програмы
- •4.3 Запуск програмы.
- •5.Главное меню программы
- •5.1. Код программы
- •5.2. Запуск программы
2.3 Код программы
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
void formmatr(float *matr,int n,int m)
{ int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
*(matr+i*m+j)=0.0001*rand();
}}
void pechat(float *matr,int n,int m)
{ int i,j;
for(i=0;i<n;i++)
{ for(j=0;j<m;j++)
{
printf("%6.2f ",*(matr+i*m+j));}
printf("\n"); }}
float maximum(float *matr,int n, int m)
{
int i,j,t=0;
float max;
max=*matr;
for(i=0;i<n;i++)
{ for(j=0;j<m;j++)
{ if(*(matr+i*m+j)>max)
{
max=*(matr+i*m+j);
t=i; }}}
printf("\nnom stroki=%d max=%f\n\n",t,max);
return t;}
void udal(float *matr,int *n,int m,int t)
{
int i,j;
if(t!=*n-1)
{
for(i=t;i<*n-1;i++)
{
for(j=0;j<m;j++)
{
*(matr+i*m+j)=*(matr+(i+1)*m+j);
}}}
*n=*n-1;}
void main()
{
float a[6][10];
int i,n,m,t;
clrscr();
printf("vvedite kol strok:");
scanf("%d",&n);
printf("vvedite kol stolbcov:");
scanf("%d",&m);
formmatr(&a[0][0],n,m);
pechat(&a[0][0],n,m);
for(i=0;i<2;i++)
{
t=maximum(&a[0][0],n,m);
udal(&a[0][0],&n,m,t);
pechat(&a[0][0],n,m);
}
getch();
}
2.4.Запуск программы
Рисунок 2.6 – Выбор количества строк и столбцов.
Рисунок 2.7 – Результат. Исходная матрица, максимум и номер его строки, матрица после первого удаления, второй по величине максимум и его ноиер строки, матрица после второго удаления.
3.Работа с графическими фигурами
Условие: круг, вписанный в квадрат, движутся по окружности с центром в середине экрана, изменяя свои цвета.
Требования:
Хотя бы одна фигура должна иметь заливку, которая согласно условию меняет свои параметры;
Завершение движения происходит по нажатию любой клавиши Esc;
По нажатию клавиши С должен изменяться цвет фона.
3.1. Алгоритм решения задачи
Решение организовано следующим образом: выполняется начальная заливка вона, далее в цикле с задержкой в 25мс фигуры перерисовываются согласно траектории меняя свои цвета, когда координата х траектории движения кратна 10.
Упрощенная блок-схема выглядит так:
Рисунок 3.1 – Блок-схема
Начало
заливка фона
рисование фигур
смена цвета
пересчет коорд.траект.
конец
3.2. Описание программы
В начале программы производится инициализация графического режима.
Использованы следующие функции:
- getch() – задержка ;
используются функции для работы с графикой:
- cleardevice();
Функция очищает активную страницу.
- setbkcolor(int color);
Функция устанавливает цвет фона, параметр color задаёт номер цвета из текущей палитры. Изменения вступают в действия на экране немедленно.
- circle(int x, int y, int radius);
Функция circle() рисует окружность. Параметры x и y задают центр окружности.
- rectangle(int left, int top, int right, int bottom);
Функция рисует прямоугольник, координаты левой верхней (left, top) и правой нижней (right, bottom) вершин передаются в качестве параметров.
- setfillstyle(int pattern, int color);
Функция устанавливает шаблон и цвет закрашиваемых контуров. Параметр color определяет цвет закраски, параметр pattern определяет стиль закрашивания и может принимать одно из значений перечислимого типа fill_patterns.
- bar(int left, int top, int right, int bottom);
Функция рисует закрашенный прямоугольник, координаты левой верхней (left, top) и правой нижней (right, bottom) вершин передаются в качестве параметров.
-floodfill(х,y,CYAN) – выполнить заливку с центром в точке с координатами (х,у), выбранным далее цветом;
кроме того, использованы следующие функции:
delay(30) – задержка следующего действия, в скобках время в миллисекундах;
Программа работает следующим образом: сразу после запуска начинается движение фигур по окружности с центром в середине экрана с изменением цвета, при нажатии клавиш 1 или 2 происходит изменение цвета заднего фона, при нажатии любой клавиши происходит остановка фигур.