Delphi-да ойын жасау


ҚАЗАҚСТАН РЕСПУБЛИКАСЫНЫҢ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ

Қ. И. СӘТБАЕВ АТЫНДАҒЫ ҚАЗАҚ ҰЛТТЫҚ ТЕХНИКАЛЫҚ УНИВЕРСИТЕТІ

кафедрасы

КУРСТЫҚ ЖҰМЫС

Тақырыбы: „ Delphi-да ойын жасау ”

Oқытушы:

Орындаған:

Алматы 2005

Мазмұны

Кіріспе 4

Проект сараптамасының кезеңдері 5

Қорытынды 14

Әдебиеттер тізімі . 15

Қосымша . . . . . . . . . ……. 16

Кіріспе

Delphi жүйесі қазіргі заманға сай сарапталған теория және практика программалаулар ішіндегі ең негізгілерінің бірі. Басқа жүйелер сияқты, Delphi программалар құру үшін жасалған және екі мінезіне сай ерекшеліктері бар: Delphi-де құралған программалар Windows-тан басқа да жүргізуші жүйелерде жұмыс істейді, ал Delphi-дің өзі тездеткіш сарапталған программалар ішіндегі инструменталдық әдістер класына жатады. Бұл тездеткіш келесі көрсетілген Delphi ерекшеліктері арқылы іске асады: визуалды құрама формалар арқылы және визуалды компоненттер кітапханасының кең түрде қолдануы арқылы.

Визуалды құрама формалар программист жұмысын, программаның интерфейс сараптамалар аспектілерінің көбінен жеңілдетеді, Delphi программалық дайындықтарды және сәйкес файлдарды автоматты түрде дайындайды. Программаны құру кезінде форма терезесі деп аталатын терезе қолданылады, бұл келешекте қолданылатын программа терезесінің прототипі ретінде қажет, бұл терезе керекті интерфейс ерекшеліктерін іске асыратын компоненттермен толтырылады (әр-түрлі тізімдер, батырмалар, сызықтар ж. т. б. ) . Компоненттер визуалды компоненттер кітапханасында орналасады. Олар программистке құралған программада бірден немесе оңай келтірулерден кейін жұмыс істейтін көптеген, әр-түрлі программалық дайындықтарды көрсетеді. Компоненттермен жұмыс істеу программада срапталған жолдардан басқа, кенеттен пайда болатын қателердің де санын азайтады.

Delphi-де есептерге арналған кез-келген типті проектіні құруға болады: тиісті есептер, файлдармен жұмыс есептері, деректер қорының қайта өңдеуі ж. т. б. Әр-түрлі логикалық ойындарды моделдеу ең тиімді және қызықты болып табылады. Бұл ойындар қолданушының назарын өзіне аударып, программалау тілдерін үйренуге қызықшылық тудырады.

Осы курстық жұмыстың мақсаты Delphi 6 жүйесіндегі осындай ойындардың бірін құру болып табылады. Ойынның аты „Суретті жина” . Бұл бәріміз білетін „15” ойыны сияқты, бірақ ойыншы сандарды емес сурет бөлшектерін жылжытады.

Проект сараптамасының кезеңдері

„Суретті жина” ойынының моделдеуі бірнеше кезеңнен тұрады. Олардың орындалуы қойылған мақсаттың жетістіктеріне кепілдік береді.

1. Delphi 6-да „Soberi” деп аталатын жаңа проект құру. Форманың терезесіне негізгі ерекшеліктерін орнату:

Left = 239

Top = 185

BorderIcons = [biSystemMenu]

BorderStyle = bsSingle

Caption =Собери картинку

ClientHeight = 254

ClientWidth = 255

Color = clBtnFace

Font. Charset = DEFAULT_CHARSET

Font. Color = clWindowText

Font. Height = -11

Font. Name = 'MS Sans Serif'

Font. Style = [ ]

Menu = MainMenu1

OldCreateOrder = False

OnCreate = FormCreate

OnMouseDown = FormMouseDown

OnPaint = FormPaint

PixelsPerInch = 96

TextHeight = 13.

2. Форманы құру процедурасын құру (OnCreate жағдайларды өңдеу) :

procedure TForm1. FormCreate(Sender: TObject) (22 бет)

Оның орындалуына келесі процедураларды программаға енгізу қажеттті:

procedure TForm1. Formmas (19 бет)

procedure TForm1. NewGame (18 бет)

Formmas процедурасы ойын алаңындағы клетка массивін формалайды. New-Game сыртта бөлінген файлдан ‘pic_1. bmp’ суретін ашуға мүмкіндік береді. Егер файлға назар аударылған кезінде қате табылса, онда форма жабылады. Сол сияқты осы процедураның орындалу кезінде суреттің пішініне сай форманың пішіні енгізіледі. Сурет орындарын алмастыратын ( Mixer процедурасы 21 бет) және формада орналасатын ( ShowPole процедурасы 20 бет) бөлшектерге бөлінеді. Бос тұрған клетканың жанында тұратын және сол бос клеткаға өте алатын, 150 рет кез келген түрде араласып шығатын суреттің бөлшегі алынады. Бөлшектердің бейнеленуі үшін формада, канваға суреттің бөлшектері көшірілетін, тікбұрышты облыстар беріледі.

3. OnMouseDown жағдайын өңдеумен процедура құру:

procedure TForm1. FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) (20 бет)

Ол тышқанның батырмасын басқан кезде фрагменттің номерін есептеуге мүмкіншілік береді. Ары-қарай Move процедурасын құру қажетті (19 бет) . Бұда көрші тұрған клетканың бос екендігін тексереді. Егер бос болса, онда бұл бөлшек өшіріліп, көрші тұрған клеткадан қайта шығады. Суреттің әр бөлшегіне өзіне сай реттік номер қойылған. Бұл сандардың дұрыс ретінде жиналғанын, яғни суреттің толық жиналғанын тексереді. Оны тексеру үшін Finish процедурасын құру керек (18 бет) . Егер сурет толық жиналса, онда бос клеткаға суреттің соңғы бөлшегі көшіріледі. Экранға “Мақсат орындалды!” деген хабарлама шығады. Егер ойыншы “Yes”-ті таңдаса, онда оның тағы бір рет ойнауға мүмкіншілігі бар, ал егер “No”-ді таңдаса онда программа өзінің жұмысын толығымен аяқтайды.

4. Формаға Standart және Dialog беттерінен MainMenu1 және OpenPictureDialog1 компоненттерін қою керек. Программаның басты менюін келесі структура бойынша құру (тышқанды MainMenu-ға апарып екі рет басу) :

5. Менюдің Ойын (игра) пунктіне процедура құру - жаңа:

procedure TForm1. N2Click(Sender: TObject) (23 бет)

Бұл процедура ойыншыға ойынды басынан бастауға мүмкіншілік береді. Сурет қайтадан формада араласып тұратын бөлшектерге бөлініп кетеді.

6. Сурет таңдау (набор картинок) пунктіне келесі қойылған талаптарды істеу керек: OpenPictureDialog компонентін bmp форматтағы суреттер файлдарымен толтыру, содан соң ойын кезінде осы суреттерді таңдауға мүмкіншілік беретін мына процедураны құру (тышқанмен сурет таңдау пунктін басу) .

procedure TForm1. N3Click(Sender: TObject) (23 бет),

Осы арқылы программа программаның бас кезінде енгізіліп жатқан сурет үшін жұмыс істейді, сол сияқты bmp форматтағы суреттерді енгізуге мүмкіншілік береді.

7. Менюдің Шығу (выход) пунктін програмалайық:

procedure TForm1. N11Click(Sender: TObject) (22 бет)

Бұл процедура ойыннан шығуды қамтамасыз етеді.

8. Ойынның деңгейін таңдау үшін келесі процедураларды таңдау керек:

жеңіл пункті үшін - procedure TForm1. N8Click(Sender: TObject) (23 бет) ;

орташа пункті үшін - procedure TForm1. N9Click(Sender: TObject) (23 бет) ;

қиын пункті үшін - procedure TForm1. N10Click(Sender: TObject) (24 бет) .

Суреттің бөлшектерге бөлінуіне қарай, деңгейі анықталады

9. Ойыншы менюдағы ойын ережесі пунктін таңдап, ойын ережесімен танысу үшін төменде көрсетілгендерді істеу керек:

  • Word Pad программасында “Суретті жина” ойынының ойнау ережесі туралы текст теру, оны “Ереже” деп аталатын rtf форматтағы файлға сақтау. Алынған файлды Soberi проектісі орналасқан папкіге сақтау;
  • Жаңа Form3 формасын құру;
  • Формаға Win32-нің ішіндегі RichEdit1 және Standart беттерінен Button1 және Panel1 объектілерін қою.
  • Объектілердің кейбір анықтамаларын өзгерту:

Panel1 үшін:

Align - alBottom.

Button1 үшін:

Caption - Жабу (Закрыть) .

RichEdit1 үшін:

Align - alClient;

ScrollBars - Vertical;

  • Use Unit (Alt+F11) командасымен Form3-пен байланысқан Unit3-ті басты программаға қосу;
  • Ойын ережесіпункті үшін процедура құру (тышқанменойын ережесінбасу) :

procedure TForm1. N6Click(Sender: TObject) (23 бет)

Бұл процедура экранға Form3 формасын шығарады және соның RichEdit компонентіне “Ереже” текстік файлындағы тексті кіргізеді. Сонда форманың түрі мынандай болады:

Осы арқылы, ойыншы ойын ережесімен танысуға мүмкіндік алады.

10. Әр қолданушы программа өзінің авторы кім екені туралы, қай жерде жасалып шыққан және т. б. өзі туралы мәліметтері болу керек. Бұл деректер программа туралы меню пунктінде орналасады. Сол деректерді оның ішіне кіргізу үшін, келесі әрекеттерді орындау керек.

  • Жаңа Progr_ проектісін құрып, оны Soberi проектісі орналасқан папкіге сақтау;
  • Формаға бірнеше объекті қою: Standart және Additional беттерінде орналасқан Label1, Label2, Button1, Panel1, Image.
  • Орналасқан компоненттермен форманың кейбір анықтамаларын өзгерту:

Form1 үшін:

Name - Form2;

Caption - Soberi_ Программа туралы ;

BorderIcons:

biMaximize - False;

biMinimize - False;

biSystemMenu - False.

Lable1 үшін:

Caption - Курстық жұмыс: „Ойын программаларын Delphi әдістемелерімен моделдеу”;

WordWrap - True;

Alignment - taCenter.

Label2 үшін:

Caption - Информатика факультетінің 2 курс студенті Ахмадиев Ж. орындады;

WordWrap - True;

Alignment - taCenter.

Panel1 үшін:

Caption - Армавир 2005;

BevelInner - byLowered;

BevelOuter - byRaised;

Для Button1:

Caption - Жабу.

  • Image компонентіне, қолданушының еркі бойынша кез келген суретті енгізу.
  • Button1 батырмасы үшін төмендегі процедураны жазу:

procedure TForm2. Button1Click(Sender: TObject)

begin

close;

end.

Бұл процедура батырманы басқан кезде форманы жабуға мүмкіндік береді.

  • Пайда болған Progr_ проектісін, алдыңғы Soberi проектісіне қосамыз;
  • Программа туралыменю пунктін келесі процедурамен программалаймыз

procedure TForm1. N7Click(Sender: TObject) (22 бет) .

Осы пункті шақыру кезінде Soberi проектісіндегі негізгі мәліметтер жазылатын Progr_ проектісіндегі форма терезесін шығарады.

11. Проектіні іске қосатын, қорытынды кезеңі.

ҚОРЫТЫНДЫ

Delphi тiлi объектi-бағдарланған бағдарламалау тiлi. Ол жоғары деңгейдегi тiлдердiң қатарына кiредi. Көптеген программистер Delphi тiлi арқылы қиын есептердiң шешуiн табады. Delphi тiлi кеңiнен таралған бағдарламалау тiлi болып саналады. Осы курстық жұмысымды орындау мен үшiн өте маңызды болды. Осы жұмыс арқылы мен Delphi программасын жақсы игердім. Бұл жиналған бiлiм болашақта маған өте қажет болады деп сенемiн. Әрине, бұл курстық жұмыста ұсынылған мәлiметтер кiшкене аз боп тұр, мұның себебi қазақ тiлiнде материалдардың аздығынан деп ойлаймын. Бiрақ, келешекте барлығы толық болатындығына еш күмәнiм жоқ.

Қолданылған әдебиеттер тізімі:

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;

... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
ОЙЫН СФЕРАСЫ ЖӘНЕ ОНЫ ҚҰРУ ЖОЛДАРЫ
Дельфи ортасында бағдарламалау
Delphi - де «Мозаика» ойын бағдарламасын жазу әдістері
«Компьютер құрастыру»
Форма оқиғалары
Мәліметтер базасы кестелері
Delphi бағдарламалау тілі
Интерактивті тапсырма және оны жасақтауға қолайлы бағдарламалық құралдары
Paradox берілгендер қоры
Физика пәнінен интерактивті тапсырмалар жасақтау
Пәндер



Реферат Курстық жұмыс Диплом Материал Диссертация Практика Презентация Сабақ жоспары Мақал-мәтелдер 1‑10 бет 11‑20 бет 21‑30 бет 31‑60 бет 61+ бет Негізгі Бет саны Қосымша Іздеу Ештеңе табылмады :( Соңғы қаралған жұмыстар Қаралған жұмыстар табылмады Тапсырыс Антиплагиат Қаралған жұмыстар kz