Pascal/Turbo Pascal - Usar mouse en pascal

 
Vista:
sin imagen de perfil

Usar mouse en pascal

Publicado por Nico (5 intervenciones) el 09/06/2016 14:57:13
Que tal gente, tengo una duda ya que tengo que hacer un juego de mesa, en pascal, y para que fuera mas interactivo me gustaría usar opciones como tirar dados y que el usuario pueda hacer click sobre ella y que tire los dados, ahora la duda es que forma o posibilidad hay de hacer esto? . Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Usar mouse en pascal

Publicado por ramon (2158 intervenciones) el 09/06/2016 18:56:50
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
{Mira procedimientos y funciones pra trabajar con el mouse en pascal
mira como se maneja las posiciones y los botones}
 
 program mouseejemplo;
 uses
    crt, dos;
  var
    regs : registers;
    raton : boolean;
 
  function raton_presente : boolean;
  begin
      regs.ah := $00;
      regs.al := $00;
      intr($33,regs);
      if regs.ax <> 0 then
      raton_presente := true
    else
      raton_presente := false;
  end;
 
  procedure muestra_raton;
  begin
      raton := false;
      if raton_presente then
      begin
          regs.ah := $00;
          regs.al := $01;
          intr($33,regs);
          raton := true;
      end;
  end;
 
  procedure oculta_raton;
  begin
      if raton = true then
      begin
         regs.ah := $00;
         regs.al := $02;
         intr($33,regs);
         raton := false;
       end;
  end;
 
  function posx_raton : word;
  begin
      posx_raton := 0;
      regs.ah := $00;
      regs.al := $03;
      intr($33,regs);
      posx_raton := regs.cx div 8
  end;
 
  function posy_raton : word;
  begin
      posy_raton := 0;
      regs.ah := $00;
      regs.al := $03;
      intr($33,regs);
      posy_raton := regs.dx  div 8
  end;
 
  function boton_raton : word;
  begin
      boton_raton := 0;
      regs.ah := $00;
      regs.al := $03;
      intr($33,regs);
      boton_raton := regs.bx
  end;
 
  procedure pon_posicion_raton(xp, yp : word);
  begin
      regs.ah := $00;
      regs.al := $04;
      regs.cx := xp;
      regs.dx := yp;
      intr($33,regs);
  end;
 
  procedure ventana_raton(xv, yv, xxv, yyv : word);
  begin
      regs.ah := $00;
      regs.al := $07;
      regs.cx := xv;
      regs.dx := xxv;
      intr($33,regs);
      regs.ah := $00;
      regs.al := $08;
      regs.cx := yv;
      regs.dx := yyv;
      intr($33,regs);
  end;
 
 
 
  begin
     clrscr;
     raton := raton_presente;
     if raton = true then
     begin
        gotoxy(10,7);write('------');
        gotoxy(10,8);write('|  A |');
        gotoxy(10,9);write('------');
        gotoxy(4,42);write('Salir Boton Derecho Del Mouse');
        muestra_raton;
        repeat
          if boton_raton = 1 then
          begin
            if (posx_raton = 12) and (posy_raton = 7) then
            begin
              gotoxy(4,40);clreol;
              gotoxy(4,40);write('A Pulsado En Cima de La Letra {A}');
            end
          else
              begin
             gotoxy(4,40);clreol;
             gotoxy(4,40);write('Posicion Raton = ',posx_raton,' X ',posy_raton);
             end;
          end;
        until boton_raton = 2;
        oculta_raton;
     end
   else
      begin
         writeln('   Raton No Presente Pulse Una Tecla');
         readkey;
      end;
  end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Usar mouse en pascal

Publicado por Nico (5 intervenciones) el 09/06/2016 21:35:36
Gracias!, ahora tengo otra duda que poco tiene que ver con el titulo, estoy viendo pequeñas funciones en graph, y haciendo unos pobres rectangulos y textos con este metodo, al hacer esto se abren 2 ventanas, mi duda es: ¿Como trabajo con graph y crt en una misma ventana? es decir yo quiero hacer un archivo, cargar datos, suma, restar, etc; pero a todo esto darle una interfaz con graph no que se abran 2 ventanas por separadas, es posible? .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Usar mouse en pascal

Publicado por ramon (2158 intervenciones) el 09/06/2016 23:56:25
Puedes crear una ventana grafica en modo texto si solo pretendes presentar una imagen o en modo grafico
tanto el texto como los graficos que desees.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Usar mouse en pascal

Publicado por Nico (5 intervenciones) el 10/06/2016 02:34:12
La idea, es realizar un juego, y en el un diferentes menús y opciones. para la parte de menus utilizaria case, y luego eso tendria que darle forma con graficos o no? es de la manera que yo lo veo, el problema es que existen acciones como el writeln que suceden en una ventana y las del graph rectangle,outtextxy, etc, que se muestran en la otra ventana. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Usar mouse en pascal

Publicado por ramon (2158 intervenciones) el 10/06/2016 12:01:34
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
{Mira Este Ejemplo}
 
program ejemplotextografico;
 uses
   crt, graph, dos;
 
  var
    drive, modo : integer;
    texto : string[80];
    grafico : boolean;
    regs : registers;
    raton : boolean;
    xr, yr : word;
 
  procedure iniciografico;
  begin
     drive := detect;
     initgraph(drive, modo,'c:\tp\bgi');
     if graphresult <> 0 then
     begin
        grafico := false;
     end
   else
      begin
        grafico := true;
     end;
  end;
 
   function raton_presente : boolean;
  begin
      regs.ah := $00;
      regs.al := $00;
      intr($33,regs);
      if regs.ax <> 0 then
      raton_presente := true
    else
      raton_presente := false;
  end;
 
  procedure muestra_raton;
  begin
      raton := false;
      if raton_presente then
      begin
          regs.ah := $00;
          regs.al := $01;
          intr($33,regs);
          raton := true;
      end;
  end;
 
  procedure oculta_raton;
  begin
      if raton = true then
      begin
         regs.ah := $00;
         regs.al := $02;
         intr($33,regs);
         raton := false;
       end;
  end;
 
  function posx_raton : word;
  begin
      posx_raton := 0;
      regs.ah := $00;
      regs.al := $03;
      intr($33,regs);
      posx_raton := regs.cx
  end;
 
  function posy_raton : word;
  begin
      posy_raton := 0;
      regs.ah := $00;
      regs.al := $03;
      intr($33,regs);
      posy_raton := regs.dx
  end;
 
  function boton_raton : word;
  begin
      boton_raton := 0;
      regs.ah := $00;
      regs.al := $03;
      intr($33,regs);
      boton_raton := regs.bx
  end;
 
  procedure pon_posicion_raton(xp, yp : word);
  begin
      regs.ah := $00;
      regs.al := $04;
      regs.cx := xp;
      regs.dx := yp;
      intr($33,regs);
  end;
 
  procedure ventana_raton(xv, yv, xxv, yyv : word);
  begin
      regs.ah := $00;
      regs.al := $07;
      regs.cx := xv;
      regs.dx := xxv;
      intr($33,regs);
      regs.ah := $00;
      regs.al := $08;
      regs.cx := yv;
      regs.dx := yyv;
      intr($33,regs);
  end;
 
  procedure borrado(x, y, long : integer);
  var
    xb, yb : integer;
   begin
      for yb := y to y + 8 do
        for xb := x to x + long do
        putpixel(xb,yb,0);
   end;
 
  begin
     iniciografico;
     if grafico = true then
     begin
       if raton_presente then
       muestra_raton;
       rectangle(1,1,getmaxx - 2,getmaxy - 2);
       line(100,100,500,100);
       Outtextxy(100,102,'Mitexto');
       rectangle(50,4,100,14);
       outtextxy(55,6,'Menu');
       bar3d(400,8,500,18,5,true);
       setcolor(1);
       outtextxy(405,10,'Mas Menu');
       setcolor(15);
   repeat
       if boton_raton = 1 then
       begin
         oculta_raton;
         xr := posx_raton;
         yr := posy_raton;
         if (xr in[50..100]) and (yr in[4..14]) then
         begin
            borrado(50,20,15);
            outtextxy(50,20,'Tomada Opcion 1');
         end;
         case xr of
   400..500 : case yr of
           8..18 : begin
                     borrado(400,20,15);
                     outtextxy(400,20,'Tomada Opcion 2');
                  end;
               end;
             end;
          pon_posicion_raton(xr, yr);
          muestra_raton;
       end;
  until  boton_raton =  2;
 
       if raton = true then
       oculta_raton;
       closegraph;
     end;
  end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Usar mouse en pascal

Publicado por Nico (5 intervenciones) el 10/06/2016 14:33:41
Muchas gracias!, igual el mouse no estaría haciendo nada no se porque, veo el apartado grafico menu, mas menu, mi texto pero de ahi no puedo clickear a nada! .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Usar mouse en pascal

Publicado por Nico (5 intervenciones) el 10/06/2016 15:14:54
Pd: hay alguna forma de usar graph es Lazarus ? porque me tira un error 2zxwirr
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Usar mouse en pascal

Publicado por ramon (2158 intervenciones) el 10/06/2016 20:43:04
Se supone que tiene su propia unidad o dll gráfica pero eso no lo se.
Tendrás que informarte de ella.
Estos programas están con pascal 7.0 suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar