- •Содержание
- •1 Пояснительная записка
- •2 Примерная тематика курсовых работ (проектов)
- •3 Содержание методических рекомендаций
- •4. Информационное обеспечение выполнения курсовой работы (проекта)
- •Задание
- •Пм.03 Участие в интеграции программных модулей мдк.03.01 Технология разработки программного обеспечения
- •230115 Программирование в компьютерных системах
- •230115 Программирование в компьютерных системах
- •Приложение в
- •Приложение в
- •Приложение в
- •Приложение в
- •Приложение в
- •Приложение в
- •Приложение в
- •Приложение в
- •Приложение в
- •Приложение в
продолжениеПриложение в
В ходе дипломного проектирования разработан программный продукт, соответствующий требованиям индивидуального задания. Это компьютерная игра, пройти которую можно, только применяя на практике знание основ алгоритмизации и программирования. Она может быть использована как средство повышения интереса студентов к приобретению этих знаний.
Работы, выполненные в ходе проектирования, и разработанный программный продукт описаны в настоящей пояснительной записке с соблюдением требований ГОСТ ЕСПД.
Таким образом, задание на выпускную квалификационную работу выполнено в полном объёме.
Список литературы
1
продолжениеПриложение в
2 ГОСТ: Единая система программной документации. Москва, Издательство стандартов, 2011, или более позднее официальное издание.
3 Давыдова Н. А. Программирование: учебное пособие / Н. А. Давыдова, Е. В. Боровская. - М.: БИНОМ. Лаборатория знаний, 2009. – 238 с.
4 Денисова Э. В., Кучер А. В. Основы вычислительной математики: Учебно-методическое пособие. - СПб.: СПбГУ ИТМО, 2010. – 164 с.
5 Ключев А. О. Программное обеспечение встроенных вычислительных систем: Учебное пособие / Ключев А.О., Кустарев П.В., Ковязина Д.Р., Петров Е.В. - СПб.: СПбГУ ИТМО, 2009. – 212 с.
6 Методические указания по оформлению курсовых и выпускной квалификационной работ: учеб. пособие для студентов ПТК НовГУ/ Авт.сост. Чернега А. М., ПТК НовГу им. Ярослава Мудрого. — Великий Новгород, 2006 – 27 с.
7 Положение об организации выполнения и защиты курсовой работы (проекта) в колледжах НовГУ [Электронный ресурс] http://www.novsu.ru/file/990719, 28.06.2014.
8 Сивохин А. В. Проектирование Windows-приложений в визуальных объектно-ориентированных средах. Описание лабораторных работ. / Сивохин А. В., Макурин Ю. Д. - Пенза: Частная типография Тугушева, 2010. – 230 с.
9 Черный А. А. Вычислительная техника в инженерных расчетах и моделировании: Учебное пособие. - Пенза: Изд-во Пенз. гос. ун-та, 2010. – 268 с.
Приложение Б
(
продолжениеПриложение в
Текст программы «Принц эльфов»
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, XPMan, jpeg;
type
TForm1 = class(TForm)
Image3: TImage;
Panel1: TPanel;
Panel2: TPanel;
Image4: TImage;
Panel3: TPanel;
Image5: TImage;
Panel4: TPanel;
Image2: TImage;
Button1: TButton;
Image6: TImage;
Image7: TImage;
Image8: TImage;
Image9: TImage;
ListBox1: TListBox;
Image10: TImage;
Image11: TImage;
Panel5: TPanel;
Button2: TButton;
Image12: TImage;
Memo1: TMemo;
Image1: TImage;
Image14: TImage;
Panel6: TPanel;
Image13: TImage;
Image15: TImage;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
Panel7: TPanel;
ListBox2: TListBox;
ListBox3: TListBox;
ListBox4: TListBox;
ListBox5: TListBox;
ListBox6: TListBox;
ListBox7: TListBox;
ListBox8: TListBox;
Button5: TButton;
ListBox9: TListBox;
Panel8: TPanel;
ListBox10: TListBox;
ListBox11: TListBox;
ListBox12: TListBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
ListBox13: TListBox;
Label7: TLabel;
Label8: TLabel;
Button6: TButton;
Image16: TImage;
Image17: TImage;
Image18: TImage;
Image19: TImage;
Image20: TImage;
Button4: TButton;
ListBox14: TListBox;
Panel9: TPanel;
Image21: TImage;
Timer1: TTimer;
Image22: TImage;
Image23: TImage;
Image24: TImage;
Timer2: TTimer;
Image25: TImage;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
MaxLevel = 10;
MaxLico = 3;
var
Form1: TForm1;
Podstanovka : array [ 'A'..'Z' ] of string;
Level : integer;
GlazaY : integer;
Lico : array [ 1..MaxLico ] of TImage;
implementation
function Slog ( ListBox : TListBox ) : string;
var i,k : integer; buf : string;
begin
for i:=0 to ListBox.Items.Count-1 do begin
k:=random(ListBox.Items.Count);
buf:=ListBox.Items[k];
ListBox.Items[k]:=ListBox.Items[i];
ListBox.Items[i]:=buf;
end;
Slog:=ListBox.Items[0];
end;
function Podst ( s : string ) : string;
var rez : string; i : integer;
begin
rez:='';
i:=1;
while (i<=length(s)) do begin
if (s[i]='#')
then begin
i:=i+1;
rez:=rez+Podstanovka[s[i]];
end
else begin
rez:=rez+s[i];
end;
i:=i+1;
end;
Podst:=rez;
end;
function Gradient(x, x1, R1,G1,B1, x2, R2,G2,B2:integer):TColor;
var t,R,G,B:real;
begin
t:= (x-x1)/(x2-x1);
R:= R1 + t*(R2-R1);
G:= G1 + t*(G2-G1);
B:= B1 + t*(B2-B1);
Gradient:=RGB(Round(R), Round(G), Round(B));
end;
procedure GradientGorizont ( x1,y1,x2,y2 : integer;
R1,G1,B1, R2,G2,B2 : integer;
Image : TImage );
var i : integer;
begin
for i:=y1 to y2 do begin
Image.Canvas.Pen.Color:=Gradient(i, y1, R1,G1,B1, y2, R2,G2,B2);
Image.Canvas.Rectangle(x1,i,x2,i+1);
end;
end;
procedure GradientVertikal ( x1,y1,x2,y2 : integer;
R1,G1,B1, R2,G2,B2 : integer;
Image : TImage );
var i : integer;
begin
for i:=x1 to x2 do begin
Image.Canvas.Pen.Color:=Gradient(i, x1, R1,G1,B1, x2, R2,G2,B2);
Image.Canvas.Rectangle(i,y1,i+1,y2);
end;
end;
procedure Patno ( X0,Y0, RadX,RadY : integer; Plotn : real;
R1,G1,B1, R2,G2,B2 : integer;
Image : TImage );
var i,Kolvo,x,y : integer; Cvet : TColor; fi,R : real;
begin
Kolvo:=round((Pi*RadX*RadY)*Plotn);
for i:=1 to Kolvo do begin
R:=random;
fi:=random*2*pi;
x:=round(X0+R*RadX*cos(fi));
y:=round(Y0+R*RadY*sin(fi));
Cvet:=Gradient(random(100)+1, 1, R1,G1,B1, 100, R2,G2,B2);
Image.Canvas.Pixels[x,y]:=Cvet;
end;
end;
procedure UzorVer ( Image : TImage );
var i,X,Y,R : integer;
begin
Image.Canvas.Pen.Color:=clGray;
Image.Canvas.Brush.Color:=clGray;
Image.Canvas.Rectangle(0,0,Image.Width,Image.Height);
for i:=0 to (Image.Height div Image.Width)-1 do begin
R:=(Image.Width div 2)-1;
X:=(Image.Width div 2);
Y:=i*Image.Width+(Image.Width div 2);
Image.Canvas.Pen.Color:=clBlack;
Image.Canvas.Brush.Color:=cl3DDkShadow; {RGB(100,155,184)}
Image.Canvas.Ellipse(X-R,Y-R,X+R,Y+R);
Image.Canvas.Pen.Color:=clSilver;
Image.Canvas.Brush.Color:=clGray;
Image.Canvas.Ellipse(X-2,Y-2,X-1,Y-1);
end;
end;
procedure UzorGor ( Image : TImage );
var i,X,Y,R : integer;
begin
Image.Canvas.Pen.Color:=clGray;
Image.Canvas.Brush.Color:=clGray;
Image.Canvas.Rectangle(0,0,Image.Width,Image.Height);
for i:=0 to (Image.Width div Image.Height)-1 do begin
R:=(Image.Height div 2)-1;
Y:=(Image.Height div 2);
X:=i*Image.Height+(Image.Height div 2);
Image.Canvas.Pen.Color:=clBlack;
Image.Canvas.Brush.Color:=cl3DDkShadow; {RGB(100,155,184)}
Image.Canvas.Ellipse(X-R,Y-R,X+R,Y+R);
Image.Canvas.Pen.Color:=clSilver;
Image.Canvas.Brush.Color:=clGray;
Image.Canvas.Ellipse(X-2,Y-2,X-1,Y-1);
end;
end;
procedure ProgressLevel;
var i,X,Y,R : integer;
begin
UzorGor(Form1.Image21);
for i:=0 to Level-1 do begin
R:=(Form1.Image21.Height div 2)-1;
Y:=(Form1.Image21.Height div 2);
X:=i*Form1.Image21.Height+(Form1.Image21.Height div 2);
Form1.Image21.Canvas.Pen.Color:=clMaroon;
Form1.Image21.Canvas.Brush.Color:=clMaroon;
if (i=(Level-1)) then Form1.Image21.Canvas.Brush.Color:=clRed;
Form1.Image21.Canvas.Ellipse(X-R,Y-R,X+R,Y+R);
Form1.Image21.Canvas.Pen.Color:=clYellow;
Form1.Image21.Canvas.Brush.Color:=clWhite;
Form1.Image21.Canvas.Ellipse(X-2,Y-2,X-1,Y-1);
end;
end;
procedure Glaza ( Faza : real; Image : TImage );
var X,Y : integer;
begin
{глаза}
Image.Canvas.Pen.Color:=clBlack;
Image.Canvas.Brush.Color:=clRed;
Image.Canvas.Ellipse(25-11-9,GlazaY-6,25-11+9,GlazaY+6);
Image.Canvas.Ellipse(25+11-9,GlazaY-6,25+11+9,GlazaY+6);
{зрачки}
Image.Canvas.Brush.Color:=clBlack;
X:=round(5*cos(Faza*2*pi));
Y:=round(1*sin(Faza*2*pi));
Image.Canvas.Ellipse(25-11+X-4,GlazaY+Y-4,25-11+X+4,GlazaY+Y+4);
Image.Canvas.Ellipse(25+11+X-4,GlazaY+Y-4,25+11+X+4,GlazaY+Y+4);
end;
procedure Monstr ( Visota{высота туловища}, Shirina{ширина туловища},
R1,G1,B1, R2,G2,B2, {цвета туловища}
R3,G3,B3, R4,G4,B4 {цвета головы и лап} : integer;
Image : TImage );
begin
Image.Canvas.Pen.Color:=clWhite;
Image.Canvas.Brush.Color:=clWhite;
Image.Canvas.Rectangle(0,0,Image.Width,Image.Height);
Form1.Image22.Canvas.Pen.Color:=clWhite;
Form1.Image22.Canvas.Brush.Color:=clWhite;
Form1.Image22.Canvas.Rectangle(0,0,Form1.Image22.Width,Form1.Image22.Height);
{туловище}
Patno ( 95,280-30-(Visota div 2), (Shirina div 2),(Visota div 2),
3.5, R1,G1,B1, R2,G2,B2, Image );
{голова}
GlazaY := (280-30-Visota-15) - 7;
Patno ( 95,280-30-Visota-15, 25,25,
3.5, R3,G3,B3, R4,G4,B4, Image );
Glaza(random,Form1.Image22);
{нижняя левая лапа}
Patno ( 95-(Shirina div 2)+(Shirina div 4),280-30-5, 15,30,
3.5, R3,G3,B3, R4,G4,B4, Image );
Patno ( 95-(Shirina div 2)+(Shirina div 4)-10,280-30-5+30, 3, 7,
5.5, R3,G3,B3, R3,G3,B3, Image );
Patno ( 95-(Shirina div 2)+(Shirina div 4) ,280-30-5+30, 3, 7,
5.5, R3,G3,B3, R3,G3,B3, Image );
Patno ( 95-(Shirina div 2)+(Shirina div 4)+10,280-30-5+30, 3, 7,
5.5, R3,G3,B3, R3,G3,B3, Image );
{нижняя правая лапа}
Patno ( 95+(Shirina div 2)-(Shirina div 4),280-30-5, 15,30,
3.5, R3,G3,B3, R4,G4,B4, Image );
Patno ( 95+(Shirina div 2)-(Shirina div 4)-10,280-30-5+30, 3, 7,
5.5, R3,G3,B3, R3,G3,B3, Image );
Patno ( 95+(Shirina div 2)-(Shirina div 4) ,280-30-5+30, 3, 7,
5.5, R3,G3,B3, R3,G3,B3, Image );
Patno ( 95+(Shirina div 2)-(Shirina div 4)+10,280-30-5+30, 3, 7,
5.5, R3,G3,B3, R3,G3,B3, Image );
{верхняя левая лапа}
Patno ( 95-(Shirina div 2),280-30-Visota+30, 20,15,
3.5, R3,G3,B3, R4,G4,B4, Image );
Patno ( 95-(Shirina div 2)-20,280-30-Visota+20, 10, 2,
5.5, R3,G3,B3, R3,G3,B3, Image );
Patno ( 95-(Shirina div 2)-23,280-30-Visota+30, 10, 2,
5.5, R3,G3,B3, R3,G3,B3, Image );
Patno ( 95-(Shirina div 2)-20,280-30-Visota+40, 10, 2,
5.5, R3,G3,B3, R3,G3,B3, Image );
{верхняя правая лапа}
Patno ( 95+(Shirina div 2),280-30-Visota+30, 20,15,
3.5, R3,G3,B3, R4,G4,B4, Image );
Patno ( 95+(Shirina div 2)+20,280-30-Visota+20, 10, 2,
5.5, R3,G3,B3, R3,G3,B3, Image );
Patno ( 95+(Shirina div 2)+23,280-30-Visota+30, 10, 2,
5.5, R3,G3,B3, R3,G3,B3, Image );
Patno ( 95+(Shirina div 2)+20,280-30-Visota+40, 10, 2,
5.5, R3,G3,B3, R3,G3,B3, Image );
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
const
Fon : array [ 1..6,1..8 ] of integer = (
( 0, 20, 00, 00,000, 04, 22,066),
( 20, 100, 04, 22,066, 06, 32,091),
(100, 140, 06, 32,091, 10, 45,126),
(140, 250, 10, 45,126, 00,102,000),
(250, 280, 00,102,000, 153,102,000),
(280, 330, 153,102,000, 102,051,000));
var i,k,R,G,B,dx,dy,x,y,N : integer; t : real;
begin
{фон}
for i:=1 to 6 do begin
GradientGorizont(0,Fon[i,1],Image13.Width,Fon[i,2],
Fon[i,3],Fon[i,4],Fon[i,5],
Fon[i,6],Fon[i,7],Fon[i,8],
Image13);
end;
{звёзды}
N:=20;
for i:=0 to N do begin
B:=random(10)*10+154;
x:=i*(Image13.Width div N)-10+random(21);
if random(3)=0
then begin y:=random(150); R:=1; end
else begin y:=random( 50); R:=random(3); end;
Image13.Canvas.Pen.Color:=RGB(B,B,B);
Image13.Canvas.Brush.Color:=clWhite;
Image13.Canvas.Ellipse(x-R,y-R,x,y);
end;
{кусты вдали}
for i:=(160 div 10) to (250 div 10) do begin
t:= ((i*10)-Fon[4,1])/(Fon[4,2]-Fon[4,1]);
R:= round( Fon[4,3] + t*(Fon[4,6]-Fon[4,3]) );
G:= round( Fon[4,4] + t*(Fon[4,7]-Fon[4,4]) );
B:= round( Fon[4,5] + t*(Fon[4,8]-Fon[4,5]) );
dx:=(i-14)*2+5;
for k:=1 to (Image13.Width div dx) do begin
dy:=random(i*i div 18);
if (random(9)=0) then dy:=dy*2;
if (random(9)=0) then dy:=dy+10;
Patno ( k*dx,i*10-(dy div 2)-5, dx-5+random(11),dy,
0.7,
R ,G ,B,
R+random(21),G+random(21),B+random(21),
Image13 );
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
Form1.Left:=10;
Form1.Top :=10;
UzorVer(Image3); UzorVer(Image5); UzorVer(Image4);
UzorGor(Image6); UzorGor(Image7); UzorGor(Image8);
UzorGor(Image9); UzorGor(Image10); UzorGor(Image11);
UzorGor(Image12);
Button1Click(Sender); {фон-пейзаж}
Button3Click(Sender); {страницы книги}
{фазы изменения лица}
Lico[ 1]:=Image23;
Lico[ 2]:=Image24;
Lico[ 3]:=Image25;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
{левая страница}
GradientVertikal( 0, 0,120,133, 200,200,180, 220,220,215, Image2);
GradientVertikal(121, 0,190,133, 220,220,215, 194,200,180, Image2);
GradientVertikal(191, 0,207,133, 194,200,180, 110,090,010, Image2);
{правая страница}
GradientVertikal(208, 0,217,133, 110,090,020, 170,170,140, Image2);
GradientVertikal(218, 0,270,133, 170,170,140, 200,200,195, Image2);
GradientVertikal(271, 0,300,133, 200,200,195, 195,202,202, Image2);
GradientVertikal(301, 0,422,133, 195,202,202, 165,160,135, Image2);
end;
procedure TForm1.Button5Click(Sender: TObject);
var i,k,KolvoZadach,NomerZadachi,NomerStroki : integer;
s,ss : string;
begin
{заполнение массива подстановок}
Podstanovka['A']:=Slog(ListBox9);
Podstanovka['B']:=Slog(ListBox11);
Podstanovka['C']:=Slog(ListBox12);
Podstanovka['D']:=Slog(ListBox2)+Slog(ListBox4)+Slog(ListBox5);
Podstanovka['E']:=Slog(ListBox13);
Podstanovka['X']:=IntTostr(random(80)+12);
Podstanovka['Y']:=IntTostr(random(850)+107);
Podstanovka['Z']:=IntTostr(random(8900)+1002);
{выбор задачи}
KolvoZadach:=ListBox10.Items.Count div 22;
NomerZadachi:=random(KolvoZadach);
NomerStroki:=NomerZadachi*22;
{переменные и константы}
ListBox1.Items.Clear;
for i:=0 to 7 do begin
ListBox1.Items.Add(Podst(ListBox10.Items[NomerStroki+2+i]));
end;
{правильная программа}
ListBox14.Items.Clear;
for i:=0 to 9 do begin
ListBox14.Items.Add(Podst(ListBox10.Items[NomerStroki+12+i]));
end;
{место для написания программы}
Memo1.Lines.Clear;
for i:=0 to 9 do begin
s:=ListBox14.Items[i];
ss:='';
if (s>'') then begin
k:=1;
while (s[k]=' ') do begin
ss:=ss+' ';
k:=k+1;
end;
if ((random(MaxLevel)+1)>=Level) then ss:=ss+s[k];
end;
Memo1.Lines.Add(ss);
end;
{левая страница книги}
Label1.Caption:='Монстр '+Podstanovka['D']
+', '+Slog(ListBox6)+', '+Slog(ListBox6)+', '+Slog(ListBox6)
+', не боится ни '
+Slog(ListBox7)+', ни '
+Slog(ListBox7)+', ни '
+Slog(ListBox7)+'. '
+Slog(ListBox8);
{правая страница книги}
Label2.Caption:=Slog(ListBox3)+' '+Podst(ListBox10.Items[NomerStroki]);
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
Monstr(random(110)+90{высота туловища},
random(70)+60 {ширина туловища},
random(90)+10,random(90)+10,random(90)+10, {цвета туловища}
random(90)+10,random(90)+10,random(90)+10,
random(90)+10,random(90)+10,random(90)+10, {цвета головы и лап}
random(90)+10,random(90)+10,random(90)+10,
Form1.Image16 );
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,k : integer; s1,s2 : string; Verno : Boolean;
begin {отправка программы-заклинания}
{проверить правильность программы}
if (ListBox14.Items.Count=Memo1.Lines.Count)
then begin
Verno:=true;
for i:=0 to ListBox14.Items.Count-1 do begin
s1:=ListBox14.Items[i];
s2:=Memo1.Lines[i];
if (length(s1)=length(s2))
then begin
for k:=1 to length(s1) do begin
if (s1[k]<>s2[k]) then Verno:=false;
end;
end
else Verno:=false;
end;
end
else Verno:=false;
{если верно, то перейти на следующий уровень}
if Verno then begin
if (Level<MaxLevel)
then begin
Timer1.Enabled:=false; {движение глаз монстра}
{меняем фон-пейзаж}
Button1Click(Sender);
{генерируется и прописывается задание}
Button5Click(Sender);
{появляется монстр}
Button6Click(Sender);
{следующий уровень}
Level:=Level+1;
ProgressLevel;
Timer1.Enabled:=true; {движение глаз монстра}
end
else begin
{сообщение о победе}
MessageDlg('Большое спасибо, я спасён!',mtWarning,[mbOK],0);
Form1.Close;
end;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin {согласие помочь = начало игры}
{начинается отсчёт уровней}
Level:=1;
Panel9.Show;
ProgressLevel;
{генерируется и прописывается задание}
Button5Click(Sender);
{появляется монстр}
Button6Click(Sender);
Timer1.Enabled:=true; {движение глаз монстра}
{кнопка меняется}
Button4.Visible:=false;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Glaza(random,Image22);
Timer1.Interval:=random(2000)+1000;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
var KakoeLico,i : integer;
begin
Timer2.Interval:=random(2000)+500;
KakoeLico:=random(MaxLico+1);
for i:=1 to MaxLico do begin
Lico[i].Visible:=(i=KakoeLico);
end;
end;
end.
Приложение В
