Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

kurs_09

.pdf
Скачиваний:
5
Добавлен:
08.02.2015
Размер:
218.46 Кб
Скачать

21

//отрезки для оси Oy x=0;

xm=(int)(maxx/2) +(int)(x*mx); for(y=-ny;y<=ny;y++)

{

ym=(int)(maxy/2) -(int)(y*my); putpixel(xm,ym,1);

}

}

//ввод исходных данных

/* a, b – границы отрезка для построения графика,

step – шаг, mx, my – масштабные коэффициенты по осям

Ox и Oy */

void input(float *a, float *b, float *step, int *mx, int *my)

{

clrscr();

puts("Построение графиков функций ");

do{

puts("Введите a, b (a<b): "); scanf("%f%f",a,b);

}

while (*a>=*b);

do{

puts("Введите step (step>0): "); scanf("%f",step);

}

while(*step<=0);

do{

puts("Введите mx, my (mx>0, my>0): "); scanf("%d%d",mx,my);

}

while (*mx<=0||*my<=0); CLR;

}

// построение точек графика

void points(float a, float b, float step, int mx, int my, int k)

{ float x,y; int xm,ym;

22

int maxx=getmaxx(),maxy=getmaxy();

for(x=a;x<=b;x+=step) {// вычисление y=f(x)

y=fun(x,k);

//вычисление машинных координат точки графика xm=(int)(maxx/2) +(int)(x*mx);

ym=(int)(maxy/2) -(int)(y*my); putpixel(xm,ym,6);//рисование точки

}

outtextxy(20, maxy-10,"Нажмите любую клавишу");

getch();

// ожидание нажатия клавиши

}

/* выбор функции по номеру

n – количество пунктов меню,

h,v – координаты для начала вывода меню(в знакоместах) */

int menu(int n, int h, int v) {// пункты меню

char * punkt[]=

{

"1. sin(x)", "2. cos(x)", "3. x*x", "4. x"

} ;

int i,k, ch;

// i – счетчик цикла, k – номер выбранного пункта //меню,

// ch – символ (ответ пользователя)

clrscr();

gotoxy(h,v);//перемещение курсора на знакоместо с ко- //ординатами (h,v)

puts("Выберите функцию для построения графика");

v+=2;

//вывод пунктов меню for(i=0;i<n;i++,v++)

{

gotoxy(h,v);

puts(punkt[i]);

}

23

++v;

//ввод ответа пользователя do

{

gotoxy(h,v);

printf("Введите номер функции: "); ch=getchar();

CLR;

}

while (ch<'1'||ch-'0'>n);

k=ch-'0';// преобразование ответа пользователя из //строки в число

return(k);

}

//главная функция void main()

{

float a,b,x,y,step; int mx,my,k;

input(&a, &b, &step, &mx, &my); k=menu(4,10,10); initialization();

osi(mx,my);

points( a, b, step, mx, my,k);

/* закрытие графического режима */ closegraph();

}

11. ВАРИАНТЫ ИНДИВИДУАЛЬНЫХ ЗАДАНИЙ

Выбор варианта индивидуального задания осуществляется по вариантам (номер варианта равен номеру студента в списке группы). Во всех играх не- обходимо предусмотреть рейтинг (счет), а также хранение лучших резуль- татов игроков.

1. Игра «Жизнь».

24

Действие игры происходит на плоскости, разделенной на клетки. Каждая клетка окружена восемью такими же клетка- ми (окрестность Мура). Каждая клетка может находиться в двух состояниях - живом или мертвом, т. е. пустом. На со- стояние любой клетки оказывают влияние состояния сосед- них клеток. Если живая клетка имеет меньше 2 или более 3 соседей в окрестности из 8 клеток, то в следующем поколе- нии она умирает, в противном случае она выживает. В пустой клетке появляется живая клетка, если у исходной клетки ров- но 3 соседа. Гибель и рождение всех клеток происходит од- новременно.

2.Игра «Минер».

Вигре должно быть реализовано поле, заваленное ящиками, по которому перемещаются два человека. Один управляет- ся игроком, второй компьютером. Цель игры - уничтожить оппонента с помощью бомб. Компьютерный персонаж дол- жен уметь передвигаться, взрывать ящики, пытаться взорвать игрока.

3.Игра «Космос».

Необходимо запрограммировать визуальную модель косми- ческого корабля, который будет расстреливать астероиды.

Перемещение космического корабля должно производиться с помощью клавиатуры или мышки. При попадании в астероид он должен исчезать с экрана. При уничтожении астероидов игроку должны начисляться очки.

4. Игра «Сапер».

На поле 9х9 есть 10 мин расположенных случайным обра- зом. Игрок вводит координаты поля, которое надо открыть, либо координаты мины. На каждом свободном поле указы- вается, сколько мин находится в радиусе одной клеточки.

Пример:

Мина: «2 2»

Чистое поле: «2 3» 5. Игра «Города».

25

В программе необходимо реализовать игру, в которой стро- ится «цепочка» из названий городов, где последняя буква

предыдущего названия должна совпадать с первой буквой следующего.

Например, цепочка может выглядеть так: «Москва Адлер Ростов Воронеж - ..»

Названия городов в цепочке не должны повторяться. Иг- рающие называют города по очереди. Проигрывает тот, кто не смог продолжить цепочку.

Человек играет с компьютером, компьютер извлекает назва- ния из файла со словарем. В качестве более сложного вари- анта предлагается составление «самообучающейся» про- граммы, которая запоминает в файле названия городов, вво- димые человеком. При начислении очков учитывается длина цепочки (чем больше длина, тем больше очков за добавлен- ное слово). Так же можно реализовать вариант игры для 2-х человек (вместо игры человека с компьютером).

6. Игра «Поле Чудес».

Компьютер загадывает слово, из имеющегося у него словаря,

и показывает человеку только двадцать процентов букв в этом слове, заменяя остальные черточками. Если в слове есть несколько одинаковых букв, то все они должны быть откры- ты. Игрок вводит варианты букв и если такая буква есть в за- гаданном слове, то компьютер «открывает» ее. Число вводи- мых букв ограничено. Человек выиграл, если слово угадано.

В начале игры должен быть выбор сложности, которая зави- сит от длины слова. При введении человеком повторно од- ной и той же буквы запрос ввода должен повторяться. Также у человека должна быть возможность ввести все слово цели- ком.

7. Игра «Животные».

Задавая вопросы о характерных признаках животного, про- грамма пытается «угадать» его. В случае неудачи запрашива- ется отличительный признак этого животного и его название. Признаки и названия должны храниться в виде дерева, кото-

26

рое хранится в файле и обновляется при закрытии програм- мы.

В качестве приза за выигрыш можно предложить игроку до- бавить в базу новое слово, которое будет использоваться при следующих играх.

8. Игра «Крестики нолики».

Игра проводится на неограниченном поле. Выигрывает тот, кто поставит в ряд 5 или более «крестиков» или «ноликов».

9. Игра «6 пешек».

На игровом поле 3х3 стоит три черных и 3 белых пешки. Компьютер играет черными. Пешки ходят прямо (если это поле свободно), «едят» по диагонали. Игрок выиграл, если он «взял» все пешки противника, прошел одной из своих пешек до конца поля или создал ситуацию, когда его про- тивник не может сделать ни одного хода. Программа должна выбирать свой ход случайно, но таким образом, чтобы этот ход не приводил к проигрышу в предыдущих партиях. Все

проигрышные ходы должны храниться в отдельном файле и обновляться по мере «обучения» программы.

10.Игра «Спички».

Даны три кучки спичек. Играющие берут по очереди любое количество спичек из любой кучки. Выигрывает тот, кто возьмет последнюю спичку. Программа должна выбирать

количество спичек при помощи алгоритма или таблицы из присоединяемого файла.

11.Игра «Быки и коровы».

Компьютер загадывает число, которое состоит из заданного количества неповторяющихся цифр. Человек вводит свои ва- рианты числа. В ответ компьютер сообщает ему количество «быков» (цифр, угаданных верно, но стоящих не на своем месте) и «коров» (цифр, угаданных верно и стоящих на сво- ем месте). Цель играющего отгадать число за ограниченное

27

количество попыток. Вместо цифр можно использовать раз- личные цвета.

12.Игра «Волки и овцы».

Шашки, изображающие волков, надо поставить на кружки 1 и 2, а овец на кружки 9 и 10. Задача играющего поме- нять волков и овец местами.

Передвигать шашки можно по одной в любом порядке по прямым направлениям на соседний кружок или через один, два кружка. Но нельзя волка и овцу ставить на одной прямой линии. Таким образом, первым ходом можно либо передви- нуть шашку с кружка 1 или 2 на кружок 3, либо шашку с кружка 9 или 10 на кружок 7. Задачу можно решить в 18 хо- дов.

13.Программа «Компьютер поэт».

Программа моделирует стихосложение, случайным образом выбирая слова из имеющегося словаря. Необходимо соблю- дение стихотворного размера, а также соблюдение заданной структуры предложения. В программе должна быть преду- смотрена возможность редактировать словарь (добавлять, исправлять, удалять слова).

14.Программа «Неформальное общение».

Программа имитирует осмысленный диалог с человеком, анализируя его ответы на свои случайно заданные вопросы. Чем полнее иллюзия диалога тем лучше.

15.Программа «Музыкальный редактор».

28

Программа должна предоставлять возможность записывать простейшие мелодии в «привычном» нотном варианте и про- слушивать их исполнение на компьютере.

16.Программа «Графический редактор».

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

Минимальный набор команд:

изображение точки с заданными координатами;

изображение отрезка прямой с заданными координатами начала и конца;

изображение окружности с заданными координатами центра и радиу- сом;

изображение прямоугольника с заданной диагональю.

Набор команд можно расширить.

12. БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Фаронов В.В. Программирование на ПЭВМ в среде Турбо-Паскаль, М.: МГТУ,

1991.

2. Уинер Р. Язык Турбо-Си. М.: Мир, 1991.

3. Методические указания для выполнения курсовой работы по дисциплине "Ал- горитмические языки и программирование" по спец. 2203. Сост. Зайцева Л.В., Ссорин В.Г.,. Ерохина Е.А. /М.: МИЭМ. 2005.

4. Уэзерелл Ч. Этюды для программистов. М.: Мир, 1982.

29

Учебное издание Программирование на языках высокого уровня

Составители:

ЕРОХИНА Елена Альфредовна МЕЛЬНИЧЕНКО Алексей Константинович

Редактор С.П. Клышинская Технический редактор О.Г. Завьялова

http://www.miem.edu.ru/rio/

rio@miem.edu.ru

Подписано в печать 22.05.09. Формат 60х84/16.

Бумага типографская № 2. Печать

- ризография.

Усл. печ. л. 1,81

Уч.-изд. л. 1,63

Тираж 70 экз.

Заказ

.

Бесплатно

Изд. 43 .

Московский государственный институт электроники и математики 109028 Москва, Б. Трехсвятительский пер., 3/12.

Отдел оперативной полиграфии Московского государственного института электроники и математики.

113054 Москва, ул. М. Пионерская, 12

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]