Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   cleanScreen,letra aleatoria (https://www.clubdelphi.com/foros/showthread.php?t=49802)

yessika19 30-10-2007 18:29:28

cleanScreen,letra aleatoria
 
Hola!

quería saber si alguien me puede decir si en delphi existe una función parecida a la funcion de pascal cleanScreen, pues lo que quiero es que llegue un momento en el que se limpie la pantalla que se presenta al usuario de mi programa, ¿se puede hacer? ¿como se usa?

además queria saber si hay alguna manera de elegir de forma aleatoria una letra del abecedario, pues lo unico que se me ocurre es usar random y despues pasarlo al codigo ascii

:(

espero que alquien pueda ayudarme

gracias!

Khronos 30-10-2007 19:21:30

A lo primero no tengo ni idea a lo que te refieres :D, y a lo segundo es muy facil.
Acabo de hacer esta funcion, pruebala haber que tal ;)

Código Delphi [-]
uses Math;
 
function RandomWord (cifras: integer): string;
const
Abc= 'abcdefghijklmnñopqrstuvwxyz';
var
iCount, u, i: integer;
begin
result:=emptystr;
iCount:=length(Abc) +1;
Randomize;
For i:=1 to cifras do begin
u:= RandomRange(1,iCount);
result:= result + abc[u];
end;
end;

Un ejemplo de llamada...

Código Delphi [-]
showmessage(RandomWord(3));
showmessage(RandomWord(1));

Salu2

yessika19 30-10-2007 19:42:51

gracias!!!! voy a probarlo a ver que tal me va :D
XD XD a lo que me refiero con limpiar la pantalla: es que tengo que hacer un programa donde el usuario vea un tablero y que se le pida una opcion del menu, en el momento en que el usuario elige su opcion y da a ENTER se borra en la pantalla lo que habia escrito y aparece un tablero nuevo

gracias por contestar!

eduarcol 30-10-2007 21:19:01

y con que componentes realizas ese tablero??

Delphius 31-10-2007 04:13:26

Hola yessika19,
La duda que mi invade es acerca de lo que comentas sobre la "limpieza". Delphi permite programar en modo consola... ¿Tu estás trabajando en ese modo? Si es así creería (no estoy seguro) que sigue operable el mismo comando que en Pascal: clrscr

Delphi es más para un producto visual... Por lo que también mi invade la duda de que si estás empleando el entorno gráfico ¿De que modo estás realizando el tablero?

Si nos explicas mejor el problema podemos serte de mayor ayuda.

Con respecto a tu segunda duda:
Se puede, otro ejemplo parecido al que te ofrece Khronos y si consideramos que deseas sólo UNA letra es este:

Código Delphi [-]
function RandomChar: char;
const
ABC = 'ABCDEFGHIJKLMNÑOPQRSTUVWXYZ';
var Pos: integer;
begin
  Pos := Random(Length(ABC)) + 1;
  result := ABC[Pos];
end;

yessika19 31-10-2007 07:57:07

:o gracias a todos por contestar y perdon por tardar

en el programa no estoy usando ningun tipo de grafico pues hasta ahora estamos empezando a usar delphi, asi es que hago el tablero con un array de 10x10. el problema es que las filas y columnas estan nombradas con caracteres y tengo que elegir una fila y una columna aleatoriamente, por eso queria saber si puedo elegir una letra aleatoriamente en vez de un número.

con lo de limpiar la pantalla, lo que deseo es que, uando el usuario elija una coordenada y de a ENTER desaparezca el tablero que tiene y aparezca otro señalando la coordenada que ha elegido (es para implementarlo a un juego de tocar y hundir barcos),por lo que queria saber si puedo usar una biblioteca de delphi y llamar a una funcion.

gracias!

Delphius 31-10-2007 14:18:57

Hola yessika19,

A ver si me explico correctamente: Delphi puede usarce para escribir programas en modo consola por tanto no se trata de un entorno gráfico.
Pero lo más habitual es usar Delphi para crear aplicaciones Win32 aprovechando el entorno gráfico que ofrece Windows. Es decir: botones, combos, listas, edits, etc.

El hecho de que haces la pregunta por Delphi y la comparas con Pascal me deja intranquilo. En fin la pregunta que debo hacerte sigue en pie: ¿Estas trabajando en un aplicativo consola? ¿O en un programa de entorno gráfico?
Cuando uno quiere hacer algo "vistoso" en pascal (y en el modo consola) tiene que ingeniarselas con milones de comandos Goto y Writeln para "imprimir" caracteres para conseguir efectos de líneas, bordes, etc. Y de vez en cuando un clrscr para limpiar la pantalla y seguir "escribiendo". En una aplicación Win32 uno emplea ventanas, timages, botones, etc y el significado que toma la palabra "limpieza" es otro.

Me pareces bien que hayas detallado el aspecto lógico de tu tablero. Pero por la manera en que describes tu problema puedo imaginarme e intuir que no es alli donde está el error sino en la manera de como representar el tablero.

Dices que no estás usando ningún gráfico. Entonces... ¿De que manera estás mostrando en pantalla el tablero? Dependiendo de como estás representando el tablero en pantalla será necesario diseñar e implementar el algoritmo adecuado para hacer la "limpieza".

Si nos muestras parte del código tal vez podamos serte de ayuda.
Por otro lado, si buscas en los foros bajo las palabras claves "batalla naval" vas a encontrar al menos un hilo, porque en al menos una oportunidad se trató el tema.

Saludos,

Lepe 31-10-2007 14:54:00

Delphius, por tu paciencia te mereces un altar :D :D.

Saludos

Delphius 31-10-2007 15:05:20

Cita:

Empezado por Lepe (Mensaje 242608)
Delphius, por tu paciencia te mereces un altar :D :D.

Saludos

No puedo darme el lujo de perder los estribos, enojarme y estresarme. Estoy enfermo desde hace tres días. Comenzó con un dolor intestinal y ahora con dolor punzante cerca del hígado. Como si me hubieran dado un golpe fuerte de costado. Con decirte que cuando respiro profundamente siento que me "tiran" los músculos en la zona. Debería ir a un hospital a revisarme, lo más probable es que lo haga hoy a la tarde:(

Y bueno... como no quiero estar portandome mal, y ponerme peor, debo tomar a cada cosa con la mejor paciencia posible.

Saludos,
PD: Supongo que se trata de un altar de oro...:D

Lepe 31-10-2007 18:35:59

Lamento oírte decir eso :(, espero que no sea nada.

¡¿Mira que ponerte malo antes de un puente?! no tienes perdón!! :rolleyes:

Saludos y cuídate.

Delphius 31-10-2007 18:59:05

Cita:

Empezado por Lepe (Mensaje 242673)
Lamento oírte decir eso :(, espero que no sea nada.
Saludos y cuídate.

Muchas gracias por alentarme.
Yo también espero que no sea nada. Lo más seguro es que se deba a que vengo llevando una dieta desde hace una poco más de una semana y el hambre como la falta de costumbre hace que los músculos y los organos se relajen, compriman.

Ahora no estoy sintiendo nada (y eso que no tomé medicamentos hoy)... bueno un poquito. A lo mejor se me está pasando... Si no se me va voy al médico. Acabo de darme cuenta de que hoy no puedo ir a hospital debo ser niñero y esperar a que mi viejo vuelva del control médico (la "cosa" también viene de familia).

Bueno. Volviendo al tema original: yessika19, ya sabes estamos aqui para ayudarte. Preferiría que aportes mayores detalles (y códio en lo posible) para que la solución se ajuste a tu problema. Ya que se trata de algo muy particular.

Saludos,

yessika19 01-11-2007 22:32:52

hola!!!

siento no haber respondido antes. delphius espero que te encuentres mejor.

respecto al tablero, por lo que he podido leer en libros se que delphi es más para usar su parte grafica, pero por el momento estamos empezando a usarle, por lo que lo unico que uso son bibliotecas y unidades. Para enseñar el trablero tengo que usar una matriz, la cual es del tipo TTablero que me viene dado en una unidad:

INTERFACE


type TTablero= array ['0'..'9','A'..'J'] of char;
{Almacena el escenario del juego de los barquitos}

{Símbolos:
. : agua no disparada.
o : agua ya disparada.
B : trozo de barco intacto.
x : trozo de barco tocado.
X : trozo de barco hundido.}


type TCasilla= record {Hace referencia a una casilla del tablero}
Fila: '0'..'9'; { indica la fila desde '0' para la fila 1 hasta '9' para la fila 10}
Columna: 'A'..'J'; { indica la columna}
end;


IMPLEMENTATION

END.

y lo que me piden es que, cuando el usuario "dispare" (para ello debe introducir las coordenadas del punto donde quiere disparar) se borre de la pantalla el tablero inicial y aparezca el tablero indicando donde ha disparado, por eso lo comparaba con la funcion que conozco en pascal.

gracias por el interes

Lepe 02-11-2007 01:11:42

Hola jessika19, en futuras intervenciones, te sugiero que te expliques tal y como has hecho en el mensaje anterior, dando detalles de lo que necesitas hacer.

12 mensajes y 2 días "gastados" en sacarte la información. Ten en cuenta que tú eres la interesada en una solución, por tanto si te explicas bien, podrías haber obtenido respuesta desde el primer mensaje ;).

En cuanto al problema, bueno, el enunciado no especifica qué clase de interfaz se requiere (Un form o ventana ya es una interfaz gráfica), no especifica que emules un matamarcianitos de los videojuegos.

Existe un control llamado StringGrid en la paleta de delphi (Standard, aditional o Win32) que es una hoja de excel, cada celda es de tipo String, por tanto, te permite sobreescribir directamente el texto mostrado sin tener que borrar previamente nada. Además su uso se asemeja bastante al Array TTablero, por lo que su implementación puede ser muy simple.

Código Delphi [-]
  StringGrid1.Cells[Columna, Fila] := '.'; 

  // y ahora cambiamos el texto para indicar que el usuario disparó:

  StringGrid1.Cells[Columna, Fila] := 'o';

Espero sea lo que buscas.

Saludos

yessika19 04-11-2007 22:14:22

gracias!!! ya he entendido unpoco mejor como va esto :D


La franja horaria es GMT +2. Ahora son las 10:40:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi