Қолданушы интерфейсін құру: мысал ретінде тетрис ойыны

Кіріспе

1. Есептің қойылымы
2. Есепті шешудің әдістері
3. Алгоритм сипаты

4. Программаны сипаттау
4.1. Программаның басты айнымалылары мен құрылымдары
4.2. Программаның басты процедуралары мен функциялары

5. Интерфейчті сипаттау
6. Жұмыстың нәтижесі
7. Программа листингі

Қорытынды

Пайдаланылған әдебиеттер
Кіріспе
Көптеген жылдар бойы алгоритмге деген қызығушылық өсу үстінде. Ол ғылыми зертеулерде, техникада, эконмикада және т.с.с. көптеген салаларда есептеуіш машиналарда қолданумен байланысты. Бұл есептеуіш машиналары берілген алгоритмдерге сәйкес оның кейбір өлшемдерінің құрылымен дәл орындайды.
Бұл мүмкіндіктің тартымды болу себебі, айтып кеткен зертеулер көлеміндегі зерттелінетін процестер көп жағдайда математикалық функция, теңдеулер жүйесі, теңсіздіктер көмегімен сипатталады және осы зерттелінетін процестердің нақты мәліметтерін алу үшін математикалық объектіде кейбір іс - әрекеттер жасау қажет.
Адамға тек, керекті түрлендірулер мен есептеулердің алгоритмдерін сипаттаса болғаны, қалғанын есептеуіш машинасы өзі орындайды. Есептеуіш машиналары тек сандық алгоритмдерді орындайды деп ойламау керек. Сонымен қатар бұл машиналар алгебралық формулалар, текстер және т.б. символдарының нәтижелерін түрлендіре алады.
Алгоритмнің жазу ережесін есептеуіш машинада орындау өте қатал болып табылады – автомат адам үшін ештеңе алдын ала ойлай алмайды. Алгоритмнің ереже түріндегі жиынтығы бағдарламамалау тілі деп аталады. Ал бағдарламамалаудың кейбір тілінде жазылған әрбір алгоритм бағдарламама деп аталады.
Зерттелінетін процестің немесе объектіні ақпараттық моделіне сәйкес құрылған және ақпаратты электронды есептеуіш машинада өңдеу алгоритмін жазу үшін арнаулы бағдарламамалау жүйелері қолданылады.
Соңғы отыз жыл көлемінде кең таралған бағдарламамалау тілдерінің арасында өзінің танымалдылығымен Паскаль тілі ерекшеленеді. Менің курстық жұмысым осы тілге негізделген, яғни алгоритм құру , Паскаль тілінің ерекшеліктерін ашу және қолданушы интерфейсін құру. Мен бұл тапсырмадан мардымды нәтиже алу үшін тетрис ойынын таңдадым. Себебі тетрис ойынының алгоритмі өте жеңіл және ыңғайлы.
ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР

1. Б.Бөрібаев. Информатика және компьютер. Алматы, 1995ж.
2. Г.Григас. Бағдарламалау негіздері. Москва, 1987.
3. А.И.Гусева. Тurbo Раsсаl 7.0-де бағдарламалау. Москва, 1996 ж.
4.Ж.Динисламов. Turbo Pascal тілі ортасында бағдарламалау, 2002 ж.
5. О.Камардинов. Есептеуіш техника және бағдарламалау. Алматы, 1997ж.
6. В.Б. Попов. Turbo Pascal, оқушылар үшін. Москва, 2001 ж.
7. Қ.Сарыбасов. Бағдарламалау курсы. Алматы, "Мектеп" 1989ж.
8. В.В.Фаронов. Turbo Pascal. Москва, 1999ж.
9. В.Э.Фигурнов. IBM PC пайдаланушылар үшін. Москва, 1996ж.
        
          
Қолданушы интерфейсін құру: мысал ретінде тетрис ойыны
Кіріспе
1. Есептің қойылымы
2. Есепті ... ... ... ... ... сипаттау
  4.1. Программаның басты айнымалылары мен құрылымдары
  4.2. Программаның басты процедуралары мен функциялары
5. Интерфейчті сипаттау
6. Жұмыстың нәтижесі
7. ... ... ... ... бойы ... ... қызығушылық өсу үстінде. Ол
ғылыми ... ... ... және ... ... ... ... қолданумен байланысты. Бұл есептеуіш машиналары
берілген ... ... оның ... ... ... ... ... тартымды болу себебі, ... ... ... ... ... көп жағдайда математикалық ... ... ... көмегімен сипатталады және осы зерттелінетін
процестердің нақты мәліметтерін алу үшін математикалық ... ... ... ... ... қажет.
Адамға тек, керекті түрлендірулер мен есептеулердің алгоритмдерін
сипаттаса болғаны, қалғанын ... ... өзі ... ... тек ... алгоритмдерді орындайды деп ойламау керек. ... бұл ... ... формулалар, текстер және т.б. символдарының
нәтижелерін түрлендіре алады.
Алгоритмнің жазу ережесін есептеуіш машинада орындау өте ... ...... адам үшін ... алдын ала ойлай алмайды. Алгоритмнің
ереже ... ... ... тілі деп аталады. Ал
бағдарламамалаудың ... ... ... ... ... ... деп
аталады.
Зерттелінетін процестің немесе объектіні ақпараттық ... ... және ... ... есептеуіш машинада өңдеу алгоритмін жазу
үшін арнаулы бағдарламамалау жүйелері қолданылады.
Соңғы отыз жыл көлемінде кең ... ... ... ... ... ... тілі ... Менің курстық
жұмысым осы тілге негізделген, яғни алгоритм құру , ... ... ашу және ... ... ... Мен бұл тапсырмадан
мардымды нәтиже алу үшін ... ... ... ... ... ... өте ... және ыңғайлы.
1. Есептің қойылымы
  Ойыншының әрекетіне сәйкес экрандағы фигураны жоғарыдан төменге қарай
жылжытуды эәне оның координатын анықтайтын ... ... ... бірдей өлшемді квадраттардан тұрады, фигуралар жиыны – аяқты,
фигуралардың түсу ...... ... ... өте жоғарғы тығыздықпен стаканның түбіне ... ... ... саны ... ... шарт). Бұл жағдайда
толық толтырылған қатар автоматты түрде стаканнан жоғалып отырады.
  Ойыншы ойынды тоқтата да, жалғасыта да алады. Ойынның ... ... мен ... ... Есепті шешудің әдісі
  Программа Паскаль тілінде жазылған. Мынандай стандартты модульдер
пайдаланылады: crt ... ... ... ... ... ... режимде жұмыс жасау үшін), и windos (таймер үшін).
  Объектілі-бағытталған программалау қолданылған. Негізгі объектілер ... және ... ... ... және ... меню ... өңдеу орындалады.
3. Алгоритмді сипаттау
4. Программаны сипаттау
  4.1. Программаның басты құрылымы мен айнымалылары
Типтелген константалар:
Стакандағы клеткалар ... : byte ... : byte ... көлемі:
size : byte =12;
Қиындық деңгейі – бастапқы қозғалыс ... мен ... ... : byte ... ... түсіру уақыт аралығы:
speed:real=0.4
Объектілер
Фигура:
TBlock=object
mx,my,x,y:byte; Ені мен ұзындығы бойынша квадраттар саны мен ... Егер ... ... ... элементі бірге тең
болады.
t:byte; Фигураның типі
pos:1..4; Фигураның жаңдайы
p,p2:pointer; квадрат суретімен оның экрандағы жағдайының көрсеткіші
s,s2:word;
procedure initmatrix; сатрицаға бастапқы ... ... ... ... фигураны бұру
procedure draw;virtual; фигураны қайтадан салу
procedure clear;virtual; фигураны өшіру
destructor ... y1: integer ; ... ... егер ... ... толтырылса, онда бірге тең
constructor init(level:byte); levelдеңгйінің бастапқы мәнін белгілеу
procedure draw; Стаканды қайта салу
procedure clear ; Стаканды экраннан өшіру
function full:boolean; Егере ... ... онда true ... ... fline ... Егер n-ші қатар толса, true мәнін
қайтарады
procedure dline (n:byte); n-ші ... ... ені мен ... ... ені мен ... Егер true ... онда жиегі сызылған
col1,col2,col3:integer; Екпінді және екпінді емес жиек фонының түсі
s:word; жадтың сәйкес ... init( x1, y1, xx , yy ... ... ... ... ... light; ... шығару
procedure unlight; Екпінді емес жиектің түсі
procedure draw; Жиекті қайта салу
procedure clear; Экранды бастапқы қалпына келтіру
destructor done;
end;
Тік ... меню ... ... ... пункт саны
col4:integer; Меню пункттерің түсі
constructor init(const pnk:menutype;n1:byte;x1,y1:word);
procedure draw;
function result:byte; Меню пункттерінің арасындағы қозғалысты
қалыптастырады және ... ... ... береді.
private h:integer; Бір пункттің биіктігі
end;
Көлденең меню:
tmainmenu=object(tsubmenu)
constructor init(const pnk:menutype;n1:byte);
procedure draw;
function result:byte;
procedure getkoords(i:byte;var ... ... ... мен ... ... tetobj:
  procedure kv ( var p : pointer ; VAR s : word ) - ... ... және ... ... ... жылжытады
Модуль Int:
 procedure drawmenu ( var res : longint ); ... ... ... ... ... ... ... шығару
  procedure best; Үздік нәтижелер кестесін шығару
  procedure clearbest; Нәтижелер кестесін ... ... ... ... ... ... Алаң
бойынша фигураны қозғалтатын, менюді шақыратын және нәтижелерді өңдейтін
негізгі процедура
  function fall ( const bl : tblock ; const f : tfield ): boolean ; ... ... ... True мәнін қайтарады
  function left(const bl:tblock; const f:tfield):boolean;
  function right(const bl:tblock; const:tfield):boolean;
  function CanBeRotated(const block:tblock;const ... ... ... ... фигураны оңға, солға немесе төңкеру мүмкін болса,
true мәнін ... ... ... ... ... ... ... мен жағдайын қайтарады
  procedure OutScore(score : integer); Есепті шығару
5. ... ... ... ... соң ... ... бар ойын ... блок туралы информациямен есеп шығады. Ойын басында пауза тәртібінде
тұрады. Экранның жоғарысында – меню.
  Басты меню мынандай ... ... ... ... ... ... (Best ... Баптау (Options)
  Менюдің қажетті пунктін бағдар және 'enter' пернесі арқылы таңдауға
болады. Бұл жағдайда ішкі меню ашылады.
  'Ойын' менюі жаңа ойын ... ... ... ... ... ... ... береді.
  'Үздік нәтижелер' менюі – үздік нәтижелер кестесін көру немесе оны
тазарту үшін.
  'Баптау’ менюінің арқасында экранның өлшемін өзгертуге ... ... ... ... ... деңгейде стакан бос. Келесі деңгейлерде
стаканның төменгі қатарлары толтырылған.
  Егер ойын кезінде кез-келген сәтте Esc ... ... онда меню ... ... Continue меню ... ... ойынды жалғастыруға болады.
6. Жұмыс нәтижесі
7. Программа листингі
program main;
uses tetobj,game,crt,graph,ramki,int;
var bl:tblock;f:tfield;
score:integer;
s:string;
procedure myinitgraph;
var gd,gm:integer;
begin
gd:=detect;
initgraph(gd,gm,'c:/bp/bgi');
if ... ... ... ... ... startgame(bl,f,score) until 1=2;
entername(score,s);
CLOSEGRAPH;
end.
unit TetObj;
interface
uses crt,graph;
const maxX:byte=20;
maxY:byte=30;
size:byte=12;
level:byte=1;
speed:real=0.4;
type TMatrixField=array[0..31,1..45]of 0..1;
TMatrixBlock=array[1..4,1..4]of 0..1;
TBlock=object
mx,my,x,y:byte;
matr:TmatrixBlock;
t:byte;
pos:1..4;
p,p2:pointer;
s,s2:word;
procedure initmatrix;
constructor init;
constructor init2(t1,pos1:byte);
procedure rotate;virtual;
procedure draw;virtual;
procedure clear;virtual;
destructor done;
end;
Tfield=object
x1,y1:integer;
matr:TMatrixField;
constructor init(level:byte);
procedure draw;
procedure clear;
function full:boolean;
function fline ... dline ... ... ... i:=1 to maxX ... j:=1 to maxY ... i:=0 to maxX+1 ... j:=1 to maxY do begin
matr[0,j]:=1;
matr[maxX+1,j]:=1;
end;
randomize;
for i:=1 to level-1 do
for j:=1 to MaxX div 2 do
matr[random(maxX-2)+1,maxY-i+1]:=1;
x1:=20;y1:=40;
x2:=size*maxX;
y2:=size*maxY;
setviewport(x1,y1,x1+x2,y1+y2,true);
end;
procedure tblock.initmatrix;
var i,j:byte;
begin
for i:=1 to 4 ... j:=1 to 4 ... t ... pos of
1,3: begin
mx:=4;
my:=1;
for j:=1 to mx do matr[j,1]:=1;
end;
2,4: begin
mx:=1;
my:=4;
for j:=1 to my do
matr[1,j]:=1;
end;
end;
2: case pos of
1,3: begin
mx:=3;
my:=2;
matr[1,1]:=1;
matr[2,1]:=1;
matr[2,2]:=1;
matr[3,2]:=1;
end;
2,4: begin
mx:=2;
my:=3;
matr[1,2]:=1;
matr[1,3]:=1;
matr[2,1]:=1;
matr[2,2]:=1;
end;
end;
3: case pos ... ... ... ... ... case pos of
1,3: begin
mx:=3;
my:=2;
matr[2,1]:=1;
matr[3,1]:=1;
matr[1,2]:=1;
matr[2,2]:=1;
end;
2,4: begin
mx:=2;
my:=3;
matr[1,1]:=1;
matr[1,2]:=1;
matr[2,2]:=1;
matr[2,3]:=1;
end;
end;
5: begin
mx:=2;
my:=2;
for i:=1 to 2 do
for j:=1 to 2 do
matr[i,j]:=1;
end;
6: case pos of
1: begin
mx:=2;
my:=3;
matr[2,1]:=1;
matr[2,2]:=1;
matr[2,3]:=1;
matr[1,3]:=1;
end;
2: ... ... ... case pos ... begin
mx:=2;
my:=3;
matr[1,1]:=1;
matr[1,2]:=1;
matr[1,3]:=1;
matr[2,3]:=1;
end;
2: begin
mx:=3;
my:=2;
matr[1,2]:=1;
matr[2,2]:=1;
matr[3,2]:=1;
matr[3,1]:=1;
end;
3: begin
mx:=2;
my:=3;
matr[2,1]:=1;
matr[2,2]:=1;
matr[2,3]:=1;
matr[1,1]:=1;
end;
4: begin
mx:=3;
my:=2;
matr[1,2]:=1;
matr[1,1]:=1;
matr[2,1]:=1;
matr[3,1]:=1;
end;
end;
end;
end;
procedure kv ( var p: pointer;VAR s:word );
var p2:pointer;
S2:WORD;
begin
s:=imagesize(0,0,size,size);
getmem(p2,s);
getimage(0,0,size,size,p2^);
setfillstyle(1,4);
setcolor(12);
bar(0,0,size,size);
rectangle(2,2,size-1,size-2);
getmem(p,s);
getimage(0,0,size,size,p^);
putimage(0,0,p2^,normalput);
freemem(p2,s);
p2:=nil;
end;
constructor tblock.init;
var x1,y1,x2,y2,i,j:integer;
begin
randomize;
t:=random(100)mod 7 +1;
pos:=random(3)+1;
initmatrix;
x:=(maxX-mx) div 2;
y:=2;
kv(p,s);
p2:=nil;
end;
constructor tblock.init2;
begin
t:=t1;
pos:=pos1;
initmatrix;
x:=(maxX-mx) div ... ... ... i:=1 to mx ... j:=1 to my ... ... then ... tblock.clear;
var x1,x2,y1,y2:integer;
begin
putimage((x-1)*size,(y-1)*size,p2^,normalput);
freemem(p2,s2);
p2:=nil;
end;
procedure tblock.rotate;
begin
if pos=1)and(k=4)and(k=tm+speed)or (ch=#80) then begin
bl.clear;
bl.y:=bl.y+1;
tm:=time ;
bl.draw;
end;
if (ch=#27) then ... ... re=-1 then best ;
if re=-2 then begin ... ... then ... cont then ... re=-3 then halt;
exit;end;
UNTIL RE=2;
ch:='?';
ramka.light;r.light;
setviewport( f.x1,f.y1,f.x1+size*maxX,
f.y1+size*maxY, false);
END;
end;
addblock(bl,f);
bl.done;
for j:=1 to maxY do begin;
if f.fline(j) then begin
f.dline(j);
f.clear;
f.draw;
score:=score+10;
outscore( score );
setviewport( f.x1,f.y1,f.x1+size*maxX,f.y1+size*maxY ,true);
if score>=sc+50 then ... ... ... ... ... жету үшін Turbo Pascal 7.0 ... ... ... көп ... ... бағдарламаалау жүйелерінің
бірі – Турбо Паскаль жүйесі болып есептеледі. Бұл ... ... ... ... ... тілінің компиляторы алынған, сонымен
қатар жүйе құрамына қолданушыға бағдарламамаларды теріп жазғанда, өңдегенде
ыңғайлы болу үшін сервистік ... ... ... (орта ) енгізілген.
Бұл жүйедегі компилятор көмегімен жүзеге ... ... ... - ... ... бағдарламамалау тілі, ал сервистік қабықшаны Турбо
Паскаль ортасы деп атау келісілген.
Осы есепті шешу үшін мен:
• Есептің қойылымын ... ... ... ... ... ... Паскаль ортасында программаны жаздым.
Программаның барлық жағдайда орындалды деп есетеуге болады, ... ... ... ... еншісінде. Бірақ бұл программаның бір
кемшілігі мәтіндері ... ... оның ... ... ... ... болады. Ашып айтар болсақ, Паскаль ортасында
графиктік ... ... жазу ... ... ... ... және ... Алматы, 1995ж.
Г.Григас. Бағдарламалау негіздері. Москва, 1987.
А.И.Гусева. Тurbo Раsсаl 7.0-де бағдарламалау. Москва, 1996 ... Turbo Pascal тілі ... ... 2002 ... ... ... және ... Алматы, 1997ж.
В.Б. Попов. Turbo Pascal, оқушылар үшін. Москва, 2001 ж.
Қ.Сарыбасов. Бағдарламалау курсы. Алматы, "Мектеп" 1989ж.
В.В.Фаронов. Turbo Pascal. Москва, 1999ж.
В.Э.Фигурнов. IBM PC ... ... ... 1996ж.

Пән: Информатика
Жұмыс түрі: Курстық жұмыс
Көлемі: 25 бет
Бұл жұмыстың бағасы: 500 теңге









Ұқсас жұмыстар
Тақырыб Бет саны
“Компьютерлік дүкен” мәліметтер базасы13 бет
"Инбридинг және аутбридинг"16 бет
Бейорганикалық қосылыстардың негізгі кластары5 бет
Инбридинг және аутбридинг3 бет
Санау жүйесі (екілік, сегіздік, ондық, оналтылық санау жүйелері)4 бет
Delphi-де мәліметтер қорын құру технологиялары жайлы ақпарат7 бет
Delphi-де мәліметтер қорын құру технологиялары туралы6 бет
GPS жүйесінде қолданылатын ақпараттық технолгияларға жалпы талдау28 бет
Linux жүйесі28 бет
SQL Server18 бет


Исходниктер
Пәндер
Көмек / Помощь
Арайлым
Біз міндетті түрде жауап береміз!
Мы обязательно ответим!
Жіберу / Отправить


Зарабатывайте вместе с нами

Рахмет!
Хабарлама жіберілді. / Сообщение отправлено.

Сіз үшін аптасына 5 күн жұмыс істейміз.
Жұмыс уақыты 09:00 - 18:00

Мы работаем для Вас 5 дней в неделю.
Время работы 09:00 - 18:00

Email: info@stud.kz

Phone: 777 614 50 20
Жабу / Закрыть

Көмек / Помощь