Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Моделирование игровых программ

текстового файла „ Правила ”. Форма принимает вид:

                                    [pic]

       Таким образом, игрок получает возможность ознакомиться  с  правилами
игры
       10. Каждая пользовательская программа должна  содержать  сведения  о
том, кто является ее автором, где и когда она была разработана.  Эти  данные
будут находиться в  пункте  меню  о  программе.  Чтобы  их  туда  поместить,
необходимо выполнить следующие действия:
    . Создать новый проект  Progr_  и  сохранить  его  в  папке,  в  которой
      находится проект Soberi;
    . Разместить на  форме  несколько  объектов:  Label1,  Label2,  Button1,
      Panel1, Image, выбрав их на страницах Standart и Additional;
    . Изменить некоторые свойства формы и размещенных компонентов:
      для Form1:
      Name – Form2;
      Caption – О программе Soberi_;
      BorderIcons:
      biMaximize – False;
      biMinimize – False;
      biSystemMenu – False.
      Для Lable1:
      Caption  – Курсовая работа по теме:  „Моделирование  игровых  программ
      средствами Delphi”;
      WordWrap – True;
      Alignment – taCenter.
      Для Label2:
      Caption –  Выполнила  студентка  3  курса  математического  факультета
      Татарникова Л. В.;
      WordWrap – True;
      Alignment – taCenter.
      Для Panel1:
      Caption – Армавир 2004;
      BevelInner – byLowered;
      BevelOuter – byRaised;
      Для Button1:
      Caption – Закрыть.
    . На компонент Image следует скопировать изображение, которое может быть
      произвольным, т. е. по желанию пользователя.
          В результате форма примет вид:

                                    [pic]

    . Для кнопки Button1 написать процедуру:
                        procedure TForm2.Button1Click(Sender: TObject)
                         begin
                         close;
                         end.
      Эта процедура позволяет при нажатии на кнопку закрывать форму.
    . Полученный проект Progr_ добавляем в первоначальный проект Soberi;
    .  Пункт меню о программе программируем следующей процедурой:
                       procedure TForm1.N7Click(Sender: TObject) (стр.21).
   При вызове этого пункта на экран будет выводиться окно формы  из  проекта
   Progr_, которое содержит основные сведения о проекте Soberi.

      11. Заключительный этап, на котором следует запустить проект.



                                 Заключение

       В результате выполнения курсовой  работы  в  среде  программирования
Delphi  6   была  смоделирована  логическая  игра  под   названием   „Собери
картинку”. Игра содержит меню, используя которое  можно  выбирать  различные
виды  картинок,   также   существует   возможность   устанавливать   уровень
сложности, который предпочитает игрок. Если есть необходимость  ознакомиться
с правилами игры, то их тоже можно найти в главном меню,  там  же  находится
основная информация о программе.
       Данный проект может  с  большим  успехом  использоваться  на  уроках
информатики в школе, в качестве примера программы, разработанной  средствами
Delphi 6, а также в качестве одной из игр, развивающих логическое  мышление.



                       Список используемой литературы:


       1. Архангельский А. Я. Интегрированная среда разработки Delphi –
М.:ЗАО, Бином; 1999.


       2. Марко Кэнту для профессионалов Delphi 6: изд. Питер, 2002.


       3. Фаронов В. В. DELPHI 6: Учебный курс (+ дискета) – СПб: Питер,
2002.



                                 Приложение
                               Текст программы

unit Soberi_;
interface
uses
   Windows,  Messages,  SysUtils,  Variants,  Classes,  Graphics,  Controls,
Forms,
  Dialogs, Menus, ExtDlgs;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    OpenPictureDialog1: TOpenPictureDialog;
    procedure FormCreate(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormPaint(Sender: TObject);

    procedure ShowPole;
    procedure Mixer;
    procedure NewGame;
    procedure Formmas;
    procedure N11Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;

implementation

uses Progr, Unit3;

{$R *.dfm}

var wc,hc,h,w: integer;fname: string;
pole: array of array of byte;
ex, ey:integer;
stp: array of array of byte;
{(1, 2, 3, 4),(5, 6, 7, 8), (9, 10, 11, 12), (13, 14, 15, 0)}
pic: TBitmap;
procedure TForm1.NewGame;
var
i, j:integer;
begin
try
 pic.LoadFromFile(fname);
except
  on EFopenError do
    begin
      ShowMessage('Ошибка обращения к файлу' + fname);
      Form1.Close;
      end;
end;
hc:=Pic.Height div H;
wc:=Pic.Width div W;
ClientWidth:= wc * W;
ClientHeight:= hc * H;
for i:=1 to H do
 for j:=1 to W do
    pole[i,j]:= stp[i,j];
Form1.Mixer;
Form1.ShowPole;
end;
function Finish: boolean;
var
  row,col: integer;
  i: integer;
begin
   row:=1; col:=1;
   Finish:= True;
   for i:=1 to 15 do
begin
   if pole[row,col] <> i then
   begin
        Finish:=False;
        break;
   end;
   if col < 4 then inc(col) else begin
                               col :=1;
                               inc(row);
                               end;
    end;
end;
procedure TForm1.Formmas;
var
i,j:integer;
begin
SetLength(stp,H+1,W+1);
SetLength(pole,H+1,W+1);
for i:=1 to H do
for j:=1 to W do
stp[i,j]:=h*(i-1)+j;
stp[H,W]:=0
end;
procedure Move(cx, cy:integer);
var
    r:integer;
begin
     if not (( abs(cx-ex)=1) and (cy-ey=0) or
     ( abs(cy-ey)=1) and (cx-ex=0)) then exit;
     Pole[ey,ex]:=Pole[cy,cx];
     Pole[cy,cx]:=0;
     ex:=cx;
     ey:=cy;
     Form1.ShowPole;
     if Finish then
     begin
          pole[H,W]:=H*W;
          Form1.ShowPole;
          r:=MessageDlg('Цель достигнута!'+ #13+
           'Еще раз?', mtInformation, [mbYes, mbNo], 0);
           if r = mrNo then Form1.Close;
           Form1.NewGame;
           end;
end;
 procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
 var
   cx,cy:integer;
begin
cx:= Trunc(X / wc) + 1;
cy:= Trunc(Y / hc) +1;
Move(cx, cy);
end;
 procedure TForm1.ShowPole;
var
  Source, Dest: Trect;
  sx, sy: integer;
  i,j: integer;
begin
     for i:=1 to W do
        for j:=1 to H do
        begin
           sy:=((pole[i,j]-1) div W)*hc;
           sx:=((pole[i,j]-1) mod W)*wc;
           Source:=Bounds(sx,sy,wc,hc);
           Dest:=Bounds((j-1)*wc,(i-1)*hc,wc,hc);
           if pole[i,j] <> 0 then Canvas.CopyRect(Dest,pic.Canvas,Source)
                                   else        Canvas.Rectangle((j-1)*wc,(i-
1)*hc,j*wc,i*hc);
     end;
end;
procedure TForm1.Mixer;
var
   x1,y1: integer;
   x2,y2: integer;
   d: integer;
   i: integer;
begin
     x1:=H; y1:=W;
     randomize;
     for i:=1 to 150 do
     begin
          repeat
                x2:=x1;
                y2:=y1;
                d:=random(4)+1;
                case d of
                   1: dec(x2);
                   2: inc(x2);
                   3: dec(y2);
                   4: inc(y2);
                end;
         until (x2>=1) and (x2<=h) and (y2>=1) and (y2<=w);
         Pole[y1,x1]:= Pole[y2,x2];
         Pole[y2,x2]:=0;
         x1:=x2;
         y1:=y2;
    end;
    ex:=x1;
    ey:=y1;
 end;
12
скачать работу

Моделирование игровых программ

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ