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


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

Кіріспе
1. Есептің қойылымы
2. Есепті шешудің әдістері
3. Алгоритм сипаты
4. Программаны сипаттау
4. 1. Программаның басты айнымалылары мен құрылымдары
4. 2. Программаның басты процедуралары мен функциялары
5. Интерфейчті сипаттау
6. Жұмыстың нәтижесі
7. Программа листингі

Қорытынды

Пайдаланылған әдебиеттер

Кіріспе

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

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

Адамға тек, керекті түрлендірулер мен есептеулердің алгоритмдерін сипаттаса болғаны, қалғанын есептеуіш машинасы өзі орындайды. Есептеуіш машиналары тек сандық алгоритмдерді орындайды деп ойламау керек. Сонымен қатар бұл машиналар алгебралық формулалар, текстер және т. б. символдарының нәтижелерін түрлендіре алады.

Алгоритмнің жазу ережесін есептеуіш машинада орындау өте қатал болып табылады - автомат адам үшін ештеңе алдын ала ойлай алмайды. Алгоритмнің ереже түріндегі жиынтығы бағдарламамалау тілі деп аталады. Ал бағдарламамалаудың кейбір тілінде жазылған әрбір алгоритм бағдарламама деп аталады.

Зерттелінетін процестің немесе объектіні ақпараттық моделіне сәйкес құрылған және ақпаратты электронды есептеуіш машинада өңдеу алгоритмін жазу үшін арнаулы бағдарламамалау жүйелері қолданылады.

Соңғы отыз жыл көлемінде кең таралған бағдарламамалау тілдерінің арасында өзінің танымалдылығымен Паскаль тілі ерекшеленеді. Менің курстық жұмысым осы тілге негізделген, яғни алгоритм құру, Паскаль тілінің ерекшеліктерін ашу және қолданушы интерфейсін құру. Мен бұл тапсырмадан мардымды нәтиже алу үшін тетрис ойынын таңдадым. Себебі тетрис ойынының алгоритмі өте жеңіл және ыңғайлы.

1. Есептің қойылымы

Ойыншының әрекетіне сәйкес экрандағы фигураны жоғарыдан төменге қарай жылжытуды эәне оның координатын анықтайтын программаның алгоритмін құру.

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

Ойыншы фигураларды өте жоғарғы тығыздықпен стаканның түбіне жиақтауы керек (толтырылмаған квадраттар саны минималды болуы шарт) . Бұл жағдайда толық толтырылған қатар автоматты түрде стаканнан жоғалып отырады.

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

2. Есепті шешудің әдісі

Программа Паскаль тілінде жазылған. Мынандай стандартты модульдер пайдаланылады: crt (басылған пернелердің кодын анықтау үшін), graph (графикалық режимде жұмыс жасау үшін), и windos (таймер үшін) .

Объектілі-бағытталған программалау қолданылған. Негізгі объектілер - фигура және стакан.
Таймердегі, басылған пернелердегі және таңдалған меню пунктіндегі оқиғаларды өңдеу орындалады.

3. Алгоритмді сипаттау

4. Программаны сипаттау

4. 1. Программаның басты құрылымы мен айнымалылары

Типтелген константалар:

Стакандағы клеткалар саны:

max : byte =20;

max : byte =30;

Клетканың көлемі:

size : byte =12;

Қиындық деңгейі - бастапқы қозғалыс жылдамдығы мен стаканның толықтығын анықтайды:

level : byte =1;

Фигураны төменге түсіру уақыт аралығы:

speed:real=0. 4

Объектілер

Фигура:

TBlock=object

mx, my, x, y:byte; Ені мен ұзындығы бойынша квадраттар саны мен координаты

matr:TmatrixBlock; Егер квадрат болса, матрица элементі бірге тең болады.

t:byte; Фигураның типі

pos:1. . 4; Фигураның жаңдайы

p, p2:pointer; квадрат суретімен оның экрандағы жағдайының көрсеткіші

s, s2:word;

procedure initmatrix; сатрицаға бастапқы мәнді бекіту

constructor init;

procedure rotate; virtual; фигураны бұру

procedure draw; virtual; фигураны қайтадан салу

procedure clear; virtual; фигураны өшіру

destructor done;

end;

Стакан:

Tfield=object

x1, y1: integer ; алаңның координаттары

matr:TMatrixField; егер сәйкес бөлігі толтырылса, онда бірге тең

constructor init(level:byte) ; levelдеңгйінің бастапқы мәнін белгілеу

procedure draw; Стаканды қайта салу

procedure clear ; Стаканды экраннан өшіру

function full:boolean; Егере стакан толса, онда true мәнін қайтарады

function fline (n:byte) :boolean; Егер n-ші қатар толса, true мәнін қайтарады

procedure dline (n:byte) ; n-ші қатарды өшіреді

private

x2, y2:integer; ені мен ұзыгдығы

end;

Жиек:

tramka=object

x, y, width, heigth:integer; координаты, ені мен ұзыгдығы

lighted:boolean; Егер true болса, онда жиегі сызылған

col1, col2, col3:integer; Екпінді және екпінді емес жиек фонының түсі

s:word; жадтың сәйкес көлемі

public

constructor init( x1, y1, xx, yy :word) ;

procedure mkactive; Терезені жиекке орнату

procedure light; Жиекті шығару

procedure unlight; Екпінді емес жиектің түсі

procedure draw; Жиекті қайта салу

procedure clear; Экранды бастапқы қалпына келтіру

destructor done;

end;

Тік меню:

tsubmenu=object(tramka)

punkts:menutype; меню пункттерінің атының массиві

n:byte; пункт саны

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 x, y:word) ;

end;

4. 2. Басты процедуралар мен функцияларды сипаттау

Модуль tetobj :
procedure kv ( var p : pointer ; VAR s : word ) - көрсеткішті квадрат суретіне және жадтың сәйкес көлеміне жылжытады

Модуль Int :
procedure drawmenu ( var res : longint ) ; Менюді экранға шығарады

procedure entername(score:longint; var name:string) ; Ойыншының атын экранға шығару
procedure best; Үздік нәтижелер кестесін шығару
procedure clearbest; Нәтижелер кестесін тазарту

Модуль Game :
procedure startgame(var bl:tblock; var f:tfield; var score:integer) ; Алаң бойынша фигураны қозғалтатын, менюді шақыратын және нәтижелерді өңдейтін негізгі процедура
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 field:tfield) : boolean; Бұл функциялар сәйкесінше фигураны оңға, солға немесе төңкеру мүмкін болса, true мәнін қайтарады
procedure NextFigure(var t1, p1:integer) ; Келесі фигураны шығарады, оның типі мен жағдайын қайтарады
procedure OutScore(score : integer) ; Есепті шығару

5. Интерфейсті сипаттау

Программаны орындауға жібергеннен соң экранда фигурасы бар ойын алаңы, келесі блок туралы информациямен есеп шығады. Ойын басында пауза тәртібінде тұрады. Экранның жоғарысында - меню.

Басты меню мынандай пункттерді қамтиды:
• Ойын( Game)
• Үздік нәтижелер (Best Results)
• Баптау (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 graphresult<>0 then

begin writeln('Graphic Error') ; readkey; halt end;

end;

begin

release(heaporg) ;

randomize;

myinitgraph;

repeat 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 (n:byte) :boolean;

procedure dline (n:byte) ;

private

x2, y2:integer;

end;

implementation

constructor tfield. init;

var i, j:byte;

begin

for i:=1 to maxX do

for j:=1 to maxY do

matr[i, j] :=0;

for i:=0 to maxX+1 do

matr[i, maxY+1] :=1;

for 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 do

for j:=1 to 4 do

matr[i, j] :=0;

case t of

1:case 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 of

1: begin

mx:=3;

my:=2;

matr[2, 1] :=1;

matr[1, 2] :=1;

matr[2, 2] :=1;

matr[3, 2] :=1;

end;

2: begin

mx:=2;

my:=3;

matr[1, 1] :=1;

matr[1, 2] :=1;

matr[1, 3] :=1;

matr[2, 2] :=1;

end;

3: begin

mx:=3;

my:=2;

matr[2, 2] :=1;

matr[1, 1] :=1;

matr[2, 1] :=1;

matr[3, 1] :=1;

end;

4: begin

mx:=2;

my:=3;

matr[2, 1] :=1;

matr[2, 2] :=1;

matr[2, 3] :=1;

matr[1, 2] :=1;

end;

end;

4: 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: begin

mx:=3;

my:=2;

matr[1, 1] :=1;

matr[2, 1] :=1;

matr[3, 1] :=1;

matr[3, 2] :=1;

end;

3: begin

mx:=2;

my:=3;

matr[1, 1] :=1;

matr[1, 2] :=1;

matr[1, 3] :=1;

matr[2, 1] :=1;

end;

4: begin

mx:=3;

my:=2;

matr[1, 1] :=1;

matr[1, 2] :=1;

matr[2, 2] :=1;

matr[3, 2] :=1;

end;

end;

7: case pos of

1: 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 2;

y:=2;

kv(p, s) ;

p2:=nil;

end;

procedure tblock. draw;

var i, j:byte;

begin

s2:=imagesize(0, 0, mx*size, my*size) ;

getmem(p2, s2) ;

getimage((x-1) *size, (y-1) *size, (x-1+mx) *size,

(y-1+my) *size, p2^) ;

for i:=1 to mx do

for j:=1 to my do

if matr[i, j] <>0 then putimage((x+i-2) *size,

(y+j-2) *size, p^, normalput) ;

end;

procedure 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<4 then inc(pos) else pos:=1;

x:=x+((mx+1) div 2) ;

y:=y+((my+1) div 2) ;

x:=x-((mx+1) div 2) ;

y:=y-((my+1) div 2) ;

initmatrix;

end;

procedure tfield. draw;

var i, j:byte;

p:pointer;

s, r, a, b:word;

col:word;

ar:array [1. . 5, 1. . 4] of word;

begin

setfillstyle(1, blue) ;

bar(0, 0, x2, y2) ;

setcolor(3) ;

for i:=1 to maxX-1 do

line(size*i, 0, size*i, y2) ;

for i:=1 to maxY-1 do

line(0, size*i, x2, size*i) ;

ar[1, 1] :=75*maxX*size div 100+4;

ar[1, 2] :=35*maxY*size div 150-4;

ar[1, 3] :=12;

ar[1, 4] :=MaxX*size div 6;

ar[2, 1] :=7*maxX*size div 10+3;

ar[2, 2] :=75*maxY*size div 150-2;

ar[2, 3] :=14;

ar[2, 4] :=MaxX*size div 8;

ar[3, 1] :=3*maxX*size div 10-6;

ar[3, 2] :=1*maxY*size div 10-4;

ar[3, 3] :=13;

ar[3, 4] :=MaxX*size div 10;

for i:=1 to 3 do begin

setcolor(ar[i, 3] ) ;

a:=ar[i, 1] ; b:=ar[i, 2] ;

r:=ar[i, 4] ;

{1}line(a, b, a+(r*3 div 10) , b-(r*95) div 100) ;

line(a-(r*3 div 10) , b-(r*95) div 100, a, b) ;

line(a+(r*3 div 10), b-(r*95) div 100, a-(r*3 div 10),

b-(r*95) div 100) ;

{2}line(a, b, a+(r*3 div 10) , b+(r*95) div 100) ;

line(a-(r*3 div 10) , b+(r*95) div 100, a, b) ;

line(a-(r*3 div 10), b+(r*95) div 100, a+(r*3 div 10),

b+(r*95) div 100) ;

{3}line(a, b, a-(r*95) div 100, b+(r*3 div 10) ) ;

line(a-(r*95) div 100, b-(r*3 div 10), a, b) ;

line(a-(r*95) div 100, b-(r*3 div 10), a-(r*95) div 100,

b+(r*3 div 10) ) ;

{4}line(a, b, a+(r*95) div 100, b+(r*3 div 10) ) ;

line(a+(r*95) div 100, b-(r*3 div 10), a, b) ;

line(a+(r*95) div 100, b-(r*3 div 10), a+(r*95) div 100,

b+(r*3 div 10) ) ;

{5}line(a+(45*r) div 100, b-(88*r) div 100, a, b) ;

line(a+(88*r) div 100, b-(45*r) div 100, a, b) ;

line(a+(45*r) div 100, b-(88*r) div 100, a+(88*r) div 100,

b-(45*r) div 100) ;

{6}line(a-(45*r) div 100, b-(88*r) div 100, a, b) ;

line(a-(88*r) div 100, b-(45*r) div 100, a, b) ;

line(a-(45*r) div 100, b-(88*r) div 100, a-(88*r) div 100,

b-(45*r) div 100) ;

{7}line(a-(45*r) div 100, b+(88*r) div 100, a, b) ;

line(a-(88*r) div 100, b+(45*r) div 100, a, b) ;

line(a-(45*r) div 100, b+(88*r) div 100, a-(88*r) div 100,

b+(45*r) div 100) ;

{8}line(a+(45*r) div 100, b+(88*r) div 100, a, b) ;

line(a+(88*r) div 100, b+(45*r) div 100, a, b) ;

line(a+(45*r) div 100, b+(88*r) div 100, a+(88*r) div 100,

b+(45*r) div 100) ;

end;

kv( p, s ) ;

for i:=1 to maxX do

for j:=1 to maxY do

if matr [i, j] = 1 then putimage( (i-1) *size,

(j-1) *size, p^, normalput ) ;

freemem( p, s ) ;

p:=nil;

end;

procedure tfield. clear;

begin

setviewport(x1, y1, x1+x2, y1+y2, true) ;

setfillstyle(1, 0) ;

bar(0, 0, x2, y2)

end;

function tfield. full;

var i:byte;

begin

full:=false;

for i:=1 to maxX do

if matr[i, 2] <>0 then full:=true ;

end;

function tfield. fline;

var i:byte;

t:boolean;

begin

t:=true;

for i:=1 to maxX do

if matr[i, n] =0 then t:=false;

fline:=t;

end;

procedure tfield. dline;

var i, j:byte;

pr:^pointer;

sz:word;

begin

for j:=n downto 2 do

for i:=1 to maxX do

matr[i, j] :=matr[i, j-1]

end;

destructor tblock. done;

begin

if p<>nil then freemem (p, s) ;

if p2<>nil then freemem (p2, s2 ) ;

p:=nil;

p2:=nil;

end;

begin

end.

unit ramki ;

interface

uses graph, crt;

type menutype=array[1. . 10] of string[15] ;

tramka=object

x, y, width, heigth:integer;

lighted:boolean;

col1, col2, col3:integer;

private

p:pointer;

s:word;

public

constructor init( x1, y1, xx, yy :word) ;

procedure mkactive;

procedure light;

procedure unlight;

procedure draw;

procedure clear;

destructor done;

end;

tsubmenu=object(tramka)

punkts:menutype;

n:byte;

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 xI, yI:word) ;

end;

implementation

constructor tramka. init;

begin

x:=x1;

y:=y1;

width:=xx;

heigth:=yy;

lighted:=false;

col1:=2;

col2:=4;

col3:=14;

end;

procedure tramka. mkactive;

begin

setviewport( x, y, x+width, y+heigth, true) ;

end;

procedure tramka. light;

begin

if not lighted then begin

mkactive;

setcolor(red) ;

setlinestyle(0, $11, 1) ;

rectangle(1, 1, width-1, heigth-1) ;

lighted:=true;

end;

end;

procedure tramka. unlight;

begin

if lighted then begin

mkactive;

setcolor(14) ;

setlinestyle(0, $11, 1) ;

rectangle(1, 1, width-1, heigth-1) ;

lighted:=false;

end;

end;

procedure tramka. draw;

begin

mkactive;

s:=imagesize( 0, 0, width, heigth ) ;

getmem( p, s) ;

getimage( 0, 0, width, heigth, p^ ) ;

setfillstyle(1, green) ;

bar( 0, 0, width, heigth ) ;

light;

end;

destructor tramka. done;

begin

if p<>nil then freemem(p, s) ;

p:=nil;

end;

procedure tramka. clear;

begin

mkactive;

unlight;

putimage(0, 0, p^, normalput) ;

if p<>nil then freemem(p, s) ;

p:=nil;

end;

constructor tsubmenu. init;

var i:byte;

begin

n:=n1;

h:=15;

tramka. init(x1, y1, 80, n*h+4) ;

for i:=1 to n do punkts[i] :=pnk[i] ;

col4:=14;

end;

procedure tsubmenu. draw;

var i:byte;

begin

tramka. draw;

setfillstyle(1, col4) ;

for i:=1 to n do begin

bar(3, (i-1) *h+3, width-3, (i) *h) ;

setcolor(col4) ;

rectangle(3, (i-1) *h+3, width-3, (i) *h) ;

setcolor(0) ;

outtextXY( 4, (i-1) *h+h div 2, punkts[i] )

end;

setcolor( red ) ; outtextXY( 4, h div 2, punkts[1] ) ;

rectangle(3, 3, width-3, h) ;

end;

function tsubmenu. result;

var c:char; var i:byte;

begin

c:='q';

draw;

i:=1;

repeat

c:=readkey;

case c of

#72: begin

setcolor( 0 ) ;

outtextXY( 4, (i-1) *h+h div 2, punkts[i] ) ;

setcolor(col4) ;

rectangle(3, (i-1) *h+3, width-3, (i) *h) ;

if i=1 then i:=n

else i:=i-1;

setcolor ( red ) ;

outtextXY( 4, (i-1) *h+h div 2, punkts[i] ) ;

rectangle(3, (i-1) *h+3, width-3, (i) *h) ;

end;

... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Java - объектіге бағытталған бағдарламалау тілі ортасында ойындар құрастыру
Информатика курсында оқушыларды оқытуда компьютерлік ойындарды пайдалану
ОЙЫН СФЕРАСЫ ЖӘНЕ ОНЫ ҚҰРУ ЖОЛДАРЫ
Ақпараттық технологиялар ұғымы
КОМПЬЮТЕРЛІК ОЙЫНДАРДЫ ҚҰРУ ТЕХНОЛОГИЯЛАРЫ
Ақпарат және информатика бойынша материалдар
CISCOIOS командаларын орындау үшін желі
Java туралы жалпы түсiнiк
Android телефондарға арналған алғашқы интерфейс
Қазіргі заманғы Qazaq Premier League (Футбол) кроссплатформалы бағдарламасын құру
Пәндер



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