singlepost

Люди помогите дописать прогу какаета фигняс процедурой pr_knopka << На главную или назад  

Program nards;
Uses crt,graph,mouse_os;
Const
kolvo_punkt=3;
name_punkt:array[1..kolvo_punkt] of string =('Play','Infomation','Exit');
Type
xy=record
x:integer;
y:integer;
end;
Var
zam,m,z:integer;
pos:array [1..12,1..24] of xy;
mesto_fishek:array [1..12,1..24] of integer;
sucs:boolean;
n,c,d,xto:integer;
x,y,h,v:integer;
lt,rt,ct:boolean;
kolvo,t:longint;
but:integer;
punkt,driver,mode,i,k:integer;
key:char;
s,s1:string;

procedure load;
var i:integer; ch:char;
begin
cleardevice;
setbkcolor (0);
setcolor(2);
outtextxy(300,390,'Starting game');
setfillstyle(4,4);
for i:=50 to 590 do
begin
bar(50,400,i,402);
delay(1000);
end;
setfillstyle(1,0);
bar(1,1,640,480);
outtextxy(320,240,'To start game please " press Enter "');
repeat
ch:=readkey;
until ch=#13;
cleardevice;
End;

Procedure menu (numb_punkt:integer);
Const
h_punkt=30;
h_prom=20;
w_punkt=100;
x_beg=300-round(w_punkt/2);
h_menu=h_punkt-kolvo_punkt+h_prom+(kolvo_punkt-1);
y_beg=200-round(h_menu/2);
Var i,x2,y1,y2:integer;
Begin
for i:=1 to kolvo_punkt do
begin
if i=numb_punkt then setfillstyle(6,2) else setfillstyle(7,14);
y1:=y_beg+(h_punkt+h_prom)*(i-1);
x2:=x_beg+w_punkt;
y2:=y1+h_punkt;
bar3d(x_beg,y1,x2,y2,3,topon);
settextjustify(1,1);
outtextxy(300,y1+round(h_punkt/2),name_punkt[i]);
end;
End;

Procedure draw_desk;
var i:integer;
Begin
setfillstyle(1,6);
bar(0,0,440,280);
setfillstyle(1,15);
bar(20,20,420,260);
setfillstyle(1,6);
bar(210,20,220,260);
setcolor(15);
setfillstyle(1,15);
for i:=1 to 6 do pieslice (32*i,20,0,360,10);
for i:=1 to 6 do pieslice (32*i,280-20,0,360,10);
for i:=1 to 6 do pieslice (205+32*i,20,0,360,10);
for i:=1 to 6 do pieslice (205+32*i,280-20,0,360,10);
end;

Procedure kubik(a,b:integer);
Begin
randomize;
setcolor(2);
if (a<1) and (b<1) then
begin
a:=random(6)+1;
b:=random(6)+1;
end;
c:=a;
d:=b;
if a=1 then
begin
setfillstyle (1,14);
bar3d (445,12,465,32,10,true);
setcolor(2);
setfillstyle(1,2);
pieslice (455,22,0,360,4);
end;
if a=2 then
begin
setfillstyle (1,14);
bar3d (445,12,465,32,10,true);
setcolor(2);
setfillstyle(1,2);
pieslice (451,22,0,360,2);
pieslice (459,22,0,360,2);
end;
if a=3 then
begin
setfillstyle (1,14);
bar3d (445,12,465,32,10,true);
setcolor(2);
setfillstyle(1,2);
pieslice (449,17,0,360,2);
pieslice (455,22,0,360,2);
pieslice (461,27,0,360,2);
end;
if a=4 then
begin
setfillstyle (1,14);
bar3d (445,12,465,32,10,true);
setcolor(2);
setfillstyle(1,2);
pieslice (451,17,0,360,2);
pieslice (460,17,0,360,2);
pieslice (460,27,0,360,2);
pieslice (451,27,0,360,2);
end;
if a=5 then
begin
setfillstyle (1,14);
bar3d (445,12,465,32,10,true);
setcolor(2);
setfillstyle(1,2);
pieslice (451,17,0,360,2);
pieslice (460,17,0,360,2);
pieslice (460,27,0,360,2);
pieslice (451,27,0,360,2);
pieslice (455,22,0,360,2);
end;
if a=6 then
begin
setfillstyle (1,14);
bar3d (445,12,465,32,10,true);
setcolor(2);
setfillstyle(1,2);
pieslice (450,17,0,360,2);
pieslice (460,17,0,360,2);
pieslice (455,17,0,360,2);
pieslice (450,27,0,360,2);
pieslice (460,27,0,360,2);
pieslice (455,27,0,360,2);
end;
if b=1 then
begin
setfillstyle (1,14);
bar3d (475,12,495,32,10,true);
setcolor(2);
setfillstyle(1,2);
pieslice (485,22,0,360,4);
end;
if b=2 then
begin
setfillstyle (1,14);
bar3d (475,12,495,32,10,true);
setcolor(2);
setfillstyle(1,2);
pieslice (481,22,0,360,2);
pieslice (489,22,0,360,2);
end;
if b=3 then
begin
setfillstyle (1,14);
bar3d (475,12,495,32,10,true);
setcolor(2);
setfillstyle(1,2);
pieslice (479,17,0,360,2);
pieslice (485,22,0,360,2);
pieslice (491,

9 ответов в теме “Люди помогите дописать прогу какаета фигняс процедурой pr_knopka”

  1. 8
    Алексей Тимофеев ответил:

    наверняка экзамен сдать надо))

    Владимир Aiditz Муромский, +5

  2. 7
    Кирилл Быков ответил:

    Владимир Aiditz Муромский, +1

  3. 6
    Владимир Муромский ответил:

    Ну а теперь попробуй встать на наше место.
    Что известно?
    1) Ошибка – в процедуре pr_knopka
    2) Ошибка – после первого if в этой процедуре
    3) Должны выводиться фишки в новом месте; что происходит на самом деле – неизвестно (ты не сообщил).

    Чтобы понять, в чем ошибка, нужно знать, как должно быть, и как есть в данный момент. То есть начинаем с пункта 3. Чтобы узнать, что происходит, не выпытывая из тебя по слову, нужно анализировать код. Читаю первые три строчки этой процедуры:

    repeat
    mousecondition(x,y,lt,rt,ct);
    until rt;

    Что такое x, y, lt, rt и ct – неизвестно. Ни в объявлениях, ни где-либо еще нет никаких комментариев на этот счет, по названию догадаться тоже сложно. И что же мне дальше анализировать? Которым по счету чувством я должен догадаться в чем ошибка?

    П.С. я конечно мог бы загнать весь код в IDE и отладчиком, шаг за шагом, пройтись по всем этим строчкам, но я пожалуй посоветую тебе ценить время тех, кто тебе помогает

  4. 5
    Владимир Муромский ответил:

    Что за программа? Что не так в процедуре кнопка? У меня лично нет желания разбираться во ВСЕМ этом коде. Если вопрос звучит как "помогите, какая-то фигня", то и в ответе будет какая-то фигня.

  5. 4
    Александр Каплунов ответил:

    Там после проверки в процедуре должны выводица фишки в новом месте, короче игра нарды с управлением мышкой, на паскале.

  6. 3
    Евгений Гаврин ответил:

    Не обнаружил pr_knopka

  7. 2
    Александр Каплунов ответил:

    27,0,360,2);
    end;
    if b=4 then
    begin
    setfillstyle (1,14);
    bar3d (475,12,495,32,10,true);
    setcolor(2);
    setfillstyle(1,2);
    pieslice (481,17,0,360,2);
    pieslice (490,17,0,360,2);
    pieslice (490,27,0,360,2);
    pieslice (481,27,0,360,2);
    end;
    if b=5 then
    begin
    setfillstyle (1,14);
    bar3d (475,12,495,32,10,true);
    setcolor(2);
    setfillstyle(1,2);
    pieslice (481,17,0,360,2);
    pieslice (490,17,0,360,2);
    pieslice (490,27,0,360,2);
    pieslice (481,27,0,360,2);
    pieslice (485,22,0,360,2);
    end;
    if b=6 then
    begin
    setfillstyle (1,14);
    bar3d (475,12,495,32,10,true);
    setcolor(2);
    setfillstyle(1,2);
    pieslice (480,17,0,360,2);
    pieslice (490,17,0,360,2);
    pieslice (485,17,0,360,2);
    pieslice (480,27,0,360,2);
    pieslice (490,27,0,360,2);
    pieslice (485,27,0,360,2);
    end;
    End;

    Procedure fischka (x,y:integer);
    Begin
    if mesto_fishek[i,k]=1 then
    Begin
    setcolor(8);
    setfillstyle(1,2);
    pieslice (x,y,0,360,8);
    setfillstyle(1,8);
    pieslice (x,y,0,360,4);
    end else
    if mesto_fishek[i,k]=2 then
    Begin
    setcolor (8);
    setfillstyle(1,14);
    pieslice (x,y,0,360,8);
    setfillstyle(1,8);
    pieslice (x,y,0,360,4);
    end else
    if mesto_fishek[i,k]=3 then
    Begin
    setcolor(4);
    setfillstyle(1,4);
    pieslice (x,y,0,360,8);
    setfillstyle(1,4);
    pieslice (x,y,0,360,4);
    end else
    if mesto_fishek[i,k]=4 then
    Begin
    setcolor (14);
    setfillstyle(1,14);
    pieslice (x,y,0,360,8);
    setfillstyle(1,14);
    pieslice (x,y,0,360,4);
    end;

    End;

    Procedure mouse;
    Var x,z:integer;
    Begin
    initmouse(sucs,3);
    showcursor;
    End;

    Procedure lv_knopka_1;
    Begin
    repeat
    mousecondition(x,y,lt,rt,ct);
    until lt;
    leftnum(x,y);
    v:=x;
    h:=y;
    for i:=1 to 12 do
    for k:=1 to 12 do
    if ((pos[i,k].x-7)<x) and (x<(pos[i,k].x+7))
    and ((pos[i,k].y-7)<y) and (y<(pos[i,k].y+7))
    then
    Begin
    m:=i;
    z:=k;
    if mesto_fishek[i,k]=1 then mesto_fishek[i,k]:=3;
    End;
    cleardevice;
    setbkcolor(7);
    draw_desk;
    kubik(c,d);
    for i:=1 to 12 do
    for k:=1 to 24 do fischka(pos[i,k].x,pos[i,k].y);
    End;

    Procedure lv_knopka_2;
    Begin
    repeat
    mousecondition(x,y,lt,rt,ct);
    until lt;
    leftnum(x,y);
    v:=x;
    h:=y;
    for i:=1 to 12 do
    for k:=13 to 24 do
    if ((pos[i,k].x-7)<x) and (x<(pos[i,k].x+7))
    and ((pos[i,k].y-7)<y) and (y<(pos[i,k].y+7))
    then
    Begin
    m:=i;
    z:=k;
    if mesto_fishek[i,k]=2 then mesto_fishek[i,k]:=4;
    end;
    cleardevice;
    setbkcolor(7);
    draw_desk;
    kubik(c,d);
    for i:=1 to 12 do
    for k:=1 to 24 do fischka(pos[i,k].x,pos[i,k].y);
    End;

    Procedure pr_knopka;
    Var i,k:integer;
    Begin
    repeat
    mousecondition(x,y,lt,rt,ct);
    until rt;
    rightnum(x,y);
    for i:= 1 to 12 do
    for k:= 1 to 24 do
    if ((pos[i,k].x-7)<x) and (x<(pos[i,k].x+7))
    and ((pos[i,k].y-7)<y) and (y<(pos[i,k].y+7))
    then if mesto_fishek[i,k]=0
    then if mesto_fishek[m,z]=3
    then
    begin
    mesto_fishek[m,z]:=0;
    mesto_fishek[i,k]:=1;
    end
    else
    if mesto_fishek[m,z]=4
    then
    begin
    mesto_fishek[m,z]:=0;
    mesto_fishek[i,k]:=2;
    end;
    cleardevice;
    setbkcolor(7);
    draw_desk;
    kubik(c,d);
    for i:=1 to 12 do
    for k:=1 to 24 do fischka(pos[i,k].x,pos[i,k].y);
    End;

    Procedure hod;
    Begin
    if xto=1 then
    begin
    lv_knopka_1;
    pr_knopka;
    xto:=2;
    end
    else
    if xto=2 then
    begin
    lv_knopka_2;
    pr_knopka;
    xto:=1;
    end;
    End;

    Procedure zap_pos(x0,y0:integer);
    Var i,k:integer;
    Begin
    for i:=1 to 6 do
    for k:=24 downto 13 do
    Begin
    pos[i,k].x:=x0*i;
    pos[i,k].y:=y0-9*k;
    End;
    for i:=7 to 12 do
    for k:=24 downto 13 do
    Begin
    pos[i,k].x:=pos[1,6].x+13+x0*i;
    pos[i,k].y:=y0-9*k;
    End;
    for i:=1 to 6 do
    for k:=1 to 12 do
    Begin
    pos[i,k].x:=x0*i;
    pos[i,k].y:=13+9*k;
    End;
    for i:=7 to 12 do
    for k:=1 to 12 do
    Begin
    pos[i,k].x:=pos[i,12].x+13+x0*i;
    po

  8. 1
    Александр Каплунов ответил:

    pos[i,k].y:=y0-9*k;
    End;
    for i:=1 to 6 do
    for k:=1 to 12 do
    Begin
    pos[i,k].x:=x0*i;
    pos[i,k].y:=13+9*k;
    End;
    for i:=7 to 12 do
    for k:=1 to 12 do
    Begin
    pos[i,k].x:=pos[i,12].x+13+x0*i;
    pos[i,k].y:=13+9*k;
    End;
    End;

    Procedure nach_pos;
    Var i,k:integer;
    Begin
    for i:=1 to 12 do
    Begin
    mesto_fishek[12,i]:=1;
    mesto_fishek[1,i]:=0;
    End;
    for i:=13 to 24 do
    Begin
    mesto_fishek[1,i]:=2;
    mesto_fishek[12,i]:=0;
    end;
    for i:=2 to 11 do
    for k:=1 to 24 do mesto_fishek[i,k]:=0;
    End;

    Procedure help;
    Begin
    cleardevice;
    setcolor(4);
    outtextxy(320,231,'Instruction');
    setcolor(2);
    outtextxy(320,240,'Levoi knopkoi – vibiraem fischky');
    setcolor(1);
    outtextxy(320,249,'Pravoi knopkoi – peremeshaem fischky');
    readln;
    closegraph;
    End;

    Begin
    clrscr;
    driver:=detect;
    InitGraph(driver,mode,'e:\bp\bgi\');
    setbkcolor(15);
    setcolor(1);
    outtextxy(50,470,' Program made student of college "Server". Alex Kaplunov');
    punkt:=1;
    repeat;
    menu(punkt);
    key:=readkey;
    if ord(key)=0 then
    Begin
    key:=readkey;
    if ord(key)=72 then
    if punkt=1 then punkt:=kolvo_punkt else dec(punkt);
    if ord(key)=80 then
    if punkt=kolvo_punkt then punkt:=1 else inc(punkt);
    end;
    until ord(key)=13;
    Case punkt of
    1:Begin
    load;
    xto:=1;
    zap_pos(32,375);
    nach_pos;
    cleardevice;
    setbkcolor(7);
    draw_desk;
    kubik(0,0);
    for i:=1 to 12 do
    for k:=1 to 24 do fischka(pos[i,k].x,pos[i,k].y);
    mouse;
    hod;
    readln;
    closegraph;
    end;
    2:help;
    3:closegraph;
    end;
    End.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.