Разработка программы-игры "Крестики-нолики"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?имволом в текущей клетке, то игра считается выигранной. На рис. 10 и 11 изображены варианты победы.
Рисунок 10 - Победа крестиков
Рисунок 11 - Победа ноликов
Были протестированы различные ситуации в игре. При возникновении ошибок, программа подвергалась доработке. Тем самым можно полагаться на то, что программа работает достаточно правильно, хотя говорить о полной ликвидации всех ошибок еще нельзя. Вполне возможно, что сейчас мы имеем исправную и весьма интересную игру.
Заключение
В данной работе написана хорошо всем известная игра Крестики-Нолики.
Стремительное развитие компьютерной техники в последние годы, появление мощнейших графических ускорителей и центральных процессоров способствовало не менее бурному развитию индустрии компьютерных игр. Выдающиеся разработки этой отрасли - это сложнейшие программы, как правило, с очень высокими требованиями к аппаратной части компьютера. Однако для возможности отдохнуть в перерыве от выполнения какой-либо работы оператору компьютера не всегда требуется новейшая компьютерная игра, а зачастую использовать её не позволяет маломощное оборудование офисного компьютера. Именно этой цели - отдыху от монотонной работы служит разработанная в рамках данного курсового проекта программа.
Несмотря на внешнюю простоту, программа представляет собой сложную систему взаимодействующих друг с другом функций. Игра требовала немало сил и времени на написание. И все же может быть усовершенствован код программы, а также добавлены новые функции.
Список литературы
URL: www.pascalabc.net - Статьи и материалы по работе со средой PascalABC.NET: www.pascalabc.net - Статьи и материалы по работе со средой PascalABC.NET: www.ru.wikipedia.org - Википедия, полезные статьи и материалы
Приложение
Код программы
Основная программа
program qqq;, Base, graphABC, Timers;: Timer;: TBase; q2: TGrafika;, j: integer;ch: char;keydown(key: integer);key of_Escape: Window.Close;;;
('Игра "Крестики - Нолики"');:= TBase.Create;:= TGrafika.Create;.StartMenu;;.ud := 1; Q1.lr := 1;.x0 := 50; Q1.y0 := 50;.t := new Timer(999, q1.TimerProc);.ii := 60;.k := 1;i := 1 to 15 doj := 1 to 15 do q1.a[i, j] := 0;; .Pole;.KtoHodit;;(1);(ord(q1.ch) = 27) or (ord(q1.ch) = 32);.t.Stop;.ExitMenu;;;(3000);:= keydown;;q1.ch = #27;.close;.
Модуль Grafika
unit Grafika;;= classCreate();Kursor(var x, y: integer; var ud, lr: shortint; c: color);StartMenu;ExitMenu;Pole;HowPlay;Symbol(x, y: integer; zn: char);;TGrafika.Create;;TGrafika.StartMenu;(25);(color.Gold);(FontStyleType.fsBold);(30, 30, ' Игра "Крестики-Нолики"');(16);(color.Blue);(FontStyleType.fsBoldUnderline);
TextOut(20, 90, 'Инструкция к игре:');(FontStyleType.fsBold);(13);(40, 120, 'Для перемещения курсора используйте');(60, 140, 'ВЛЕВО >'); (60, 160, 'ВПРАВО <');
TextOut(60, 180, 'ВВЕРХ ^'); (60, 200, 'ВНИЗ ');
TextOut(40, 240, 'Используйте ENTER для ввода ');(40, 260, 'Для начала игры нажмите ENTER!!!!');
sleep(3000);;;
TGrafika.ExitMenu;{Меню после игры -------}(color.Gold);(FontStyleType.fsBold);
TextOut(20, 380, 'Для выхода из игры нажмите ''ESCAPE''');(20, 360, 'Будет начата новая игра');
end;
TGrafika.kursor(var x, y: integer; var ud, lr: shortint; c: color);(c);(3);:= 30 + (lr * 20);:= 30 + (ud * 20);(x + 2, y + 2, x + 18, y + 2);line(x + 2, y + 18, x + 18, y + 18);line(x + 2, y + 2, x + 2, y + 18);line(x + 18, y + 2, x + 18, y + 18);;
TGrafika.Pole;{Вид игрового поля}(color.Red);(13);(color.SkyBlue);(3);
{reshetka}(50, 50, 350, 50);line(70, 50, 70, 350);(50, 70, 350, 70); line(90, 50, 90, 350);(50, 90, 350, 90);line(110, 50, 110, 350);(50, 110, 350, 110);line(130, 50, 130, 350);(50, 130, 350, 130);line(150, 50, 150, 350);(50, 150, 350, 150);line(170, 50, 170, 350);(50, 170, 350, 170);line(190, 50, 190, 350);(50, 190, 350, 190);line(210, 50, 210, 350);(50, 210, 350, 210);line(230, 50, 230, 350);(50, 230, 350, 230);line(250, 50, 250, 350);(50, 250, 350, 250);line(270, 50, 270, 350);(50, 270, 350, 270);line(290, 50, 290, 350);(50, 290, 350, 290);line(310, 50, 310, 350);(50, 310, 350, 310);line(330, 50, 330, 350);(50, 330, 350, 330);line(350, 50, 350, 350);(50, 350, 350, 350);line(50, 50, 50, 350);(fontstyletype.fsBoldItalic);(20, 10, 'Играйте!');;
TGrafika.HowPlay;{Как играть}(color.Green);(225, 0, 225, 300);(225, 300, 500, 300);(500, 0, 500, 300);(225, 0, 500, 0);(color.Blue);(FontStyleType.fsBoldUnderline);(240, 30, 'Инструкция');(FontStyleType.fsBold);(10);(250, 80, 'Для перемещения используйте');(295, 105, 'LEFT'); TextOut(350, 105, chr(97));(295, 125, 'RIGHT'); TextOut(350, 125, chr(100));(295, 145, 'UP'); TextOut(350, 145, chr(115));(295, 165, 'DOWN'); TextOut(350, 165, chr(119));
TextOut(230, 230, 'Нажмите Enter чтобы поставить X или Y');
end;
TGrafika.Symbol(x, y: integer; zn: char);{Символ X или O в игровом поле}c: color;zn = 'X' then c := Color.Green else c := Color.Red;(c);SetFontStyle(fontstyletype.fsBold);(x + 5, y + 1, zn);;
end.
Модуль Base
unit Base;, Timers, GraphABC;= class(Tgrafika): timer;, y0, i, ii, k, j: integer;, zn: char; c: color;: array[1..15, 1..15] of shortint;, ud, lr, Zero: shortint;
Create;TBase.TimerProc;KtoHodit;KeyDown(Key: integer);Pobeditel;;TBase.Create;;TBase.TimerProc();(400, 10, 'Осталось ' + inttostr(ii) + ' сек.!');(ii);ii 32) then [ud, lr] := n; inc(k); symbol(x0, y0, zn); ii := 60; pobeditel; end;;_Escape: .Close;;_space: ch := chr(32) ;;;
TBase.KtoHodit;:= 0;(k mod 2 <> 0) then begin zn := 'X'; n := 1; t.Start; endbegin zn := 'O'; n := 2; t.Start end;:= KeyDown;;
TBase.Pobeditel;, j: integer;i := 1 to 15 doj := 1 to 15 doi of
..4: j of
..4: ((a[i, j] = n) and (a[i + 1, j] = n) and (a[i + 2, j] = n) and (a[i + 3, j] = n) and (a[i + 4, j] = n)) or ((a[i, j] = n) and (a[i, j + 1] = n) and (a[i, j + 2] = n) and (a[i, j + 3] = n) and (a[i, j + 4] = n)) or ((a[i, j] = n) and (a[i + 1, j + 1] = n) and (a[i + 2, j + 2] = n) and (a[i + 3, j + 3] = n) and (a[i + 4, j + 4] = n)) then(400, 220, 'Победил игрок ' + zn);:= chr(32);;;
..11: ((a[i, j] = n) and (a[i + 1, j] = n) and (a[i + 2, j] = n) and (a[i + 3, j] = n) and (a[i + 4, j] = n)) or ((a[i, j] = n) and (a[i, j + 1] = n) and (a[i, j + 2] = n) and (a[i, j + 3] = n) and (a[i, j + 4] = n)) or ((a[i, j] = n) and (a[i + 1, j + 1] = n) and (a[i + 2, j + 2] = n) and (a[i + 3, j + 3] = n) and (a[i + 4, j + 4] = n)) or ((a[i, j] = n) and (a[i, j - 1] = n) and (a[i, j - 2] = n) and (a[i, j - 3] = n) and (a[i, j - 4] = n)) or ((a[i, j] = n) and (a[i + 1, j - 1] = n) and (a[i + 2, j - 2] = n) and (a[i + 3, j - 3] = n) and (a[i + 4, j - 4] = n)) then(400, 220, 'Победил игрок ' + zn);:= chr(32);;;
..15:((a[i, j] = n) and (a[i, j - 1] = n) and (a[i, j - 2] = n) and (a[i, j - 3] = n) and (a[i, j - 4] = n)) or ((a[i, j] = n) and (a[i + 1, j - 1] = n) and (a[i + 2, j - 2] = n) and (a[i + 3, j - 3] = n) and (a[i + 4, j - 4] = n)) or ((a[i, j] = n) and (a[i + 1, j] = n) and (a[i + 2, j] = n) and (a[i + 3, j] = n) and (a[i + 4, j] = n)) t