FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
cargar sonido con delphi 7
Hola,
a ver si alguien me puede echar una mano. Soy un estudiante que esta haciendo un juego tipo arkanoid en delphi 7 pero tengo algunas dificultades ya que nunca habia usado este programa ni sabia nada de la programacion en pascal. En resumen, querria que alguien me ayudara diciendome con que comandos (en delphi 7) puedo cargar un sonido (lo quiero por ejemplo que suena un bip cada vez que la pelota rebota en una pared). He cargado texturas pero no se como hacerlo con sonidos. Se puede cargar un video? en que formatos? y un gif? que comando tengo que poner en el "uses" en caso de poder usar gif (por ejemplo, si cargo texturas jpeg tengo que poner "jpeg" en el "uses"). Otra cosa. Tengo 3 esferas con sus respectivos comportamientos behaviours, y cada vez que una de ellas esta mas abajo de -13 en el eje Y, se destruyen. Lo que quiero es que logicamente cuando la ultima de ellas pase de -13 el juego se acabe. Habia pensado en hacer una variable que cuente, cada vez que una de ellas baje de -13 que el contador se ponga a 1, y cuando el contador llegue a 3 que se acabe el juego, pero no se como hacer lo del contador. A ver si alguien me puede ayudar. Me gustaria que me dijerais que comandos tengo que poner en el "uses" en caso de necesitarlo, de que clase son las variables que usare (integer, strings, etc...), en que procedures tengo que poner las cosas, etc, ya que soy novato y no tengo idea. Muchas gracias. PD: He decidido poner un post porque llevo una semana mirando muchos tutoriales y la mayoria estan orientados a hacer procesadores de texto, aun asi he aprendido "mucho" ya que partia de 0. copiare mi UNIT1 del programa por si alguien le interesa, a modo de curiosidad (logicamente partiendo de 0 no he podido hacer solo lo que muestro a continuacion, sino con ayuda): unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, GLWin32Viewer, GLMisc, GLScene, GLObjects, GLODEManager, GLCadencer, jpeg, VectorGeometry, Keyboard, ExtCtrls, dynode, Menus; type TForm1 = class(TForm) GLScene1: TGLScene; visor: TGLSceneViewer; camara1: TGLCamera; luz: TGLLightSource; paredtrasera: TGLCube; bloqueestatico1: TGLCube; helice3: TGLCube; helice1: TGLCube; helice2: TGLCube; bloqueestatico2: TGLCube; gestorODE: TGLODEManager; GLRenderPoint1: TGLRenderPoint; GLCadencer1: TGLCadencer; GLDummyCube1: TGLDummyCube; pelota: TGLSphere; bloque1: TGLCube; soporte: TGLCube; bloque3: TGLCube; listaUniones: TGLODEJointList; ladoderecho: TGLSphere; ladoizquierdo: TGLSphere; Timer1: TTimer; paredizquierda: TGLCube; paredderecha: TGLCube; techo: TGLCube; suelo: TGLCube; pelota2: TGLSphere; pelota3: TGLSphere; procedure GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: Double); procedure Timer1Timer(Sender: TObject); procedure gestorODECollision(Sender, Object1, Object2: TObject; var Contact: TdContact; var HandleCollision: Boolean); private colisionAnterior, colisionActual : boolean; colisionespelota: Integer; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: Double); var dinsoporte: TGLODEDynamic; begin dinsoporte := soporte.Behaviours[0] as TGLODEDynamic; if IsKeyDown(VK_LEFT) then dinsoporte.AddForce(AffineVectorMake(0, 0, -50)); if IsKeyDown(VK_RIGHT) then dinsoporte.AddForce(AffineVectorMake(0, 0, 50)); colisionAnterior := colisionActual; colisionActual := false; if pelota.Position.Y < -13 then begin end; gestorODE.Step(deltaTime) end; procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1.Enabled := false; end; procedure TForm1.gestorODECollision(Sender, Object1, Object2: TObject; var Contact: TdContact; var HandleCollision: Boolean); var comp1 : TGLODEBehaviour; comp2 : TGLODEBehaviour; obj1 : TGLCustomSceneObject; obj2 : TGLCustomSceneObject; begin comp1 := Object1 as TGLODEBehaviour; comp2 := Object2 as TGLODEBehaviour; obj1 := comp1.Owner.Owner as TGLCustomSceneObject; obj2 := comp2.Owner.Owner as TGLCustomSceneObject; if ((obj1.Name = 'pelota') or (obj1.Name = 'pelota2') or (obj1.Name = 'pelota3')) and ((obj2.Name = 'bloque1') or (obj2.Name = 'bloque2') or (obj2.Name = 'bloque3'))then begin colisionActual := true; if colisionAnterior = false then begin obj2.Tag := obj2.Tag+1; if obj2.Tag = 1 then obj2.Material.Texture.Image.LoadFromFile('prueba piedra.JPG') else begin comp2.Manager := nil; obj2.Visible := false; end; end; end; end; end. |
#2
|
||||
|
||||
Bueno creo que tienes varias alternastivas para la reproduccion de sonido en delphi; entre las cuales te puedo citar:
1: Usar el Componente TMediaPlayer de la pestaña System de la paleta. 2:Usar la funcion (API) sndPlaySound de la unidad MMSystem. 3: Usar un componente de Tercero. La mejor opcion segun veo tu caso , es usar la segunda alternativa, es decir la funcion sndPlaySound de la unidad MMSystem. Ejemplo de uso: Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#3
|
|||
|
|||
Cargar sonido, etc.
Gracias, tu respuesta ha sido clara y sencilla y me ha sido de gran utilidad.
Habia probado anteriormente consndPlaySound, pero no habia puesto MMsystem en el uses, supongo que ese fue mi error. Respecto a mi pregunta sobre si puedo usar gif's, o el contador de variables, sabrias como ayudarme o asesorarme? Gracias |
#4
|
||||
|
||||
Cita:
Y sobre tu varible es una buena idea, aunque podrias mejor usar Objetos(aplicar POO), es decir hacer que cada Esfera sea un objeto y bajo ciertas circunstacias(llego a -13) pues el objeto ya sabra destruirse a si mismo,o en todo caso tambien podria tener un controlador de Objetos que haga esa tarea, que creo que seria mejor. Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#5
|
|||
|
|||
ooo algo asi
o algo asi es lo que uso mucho
en un timer coloco lo siguiente por ejem: Count := (Count mod 10) + 1; img.picture.LoadFromFile ('graficos\avionderecha' + IntToStr (Count) + '.png'); entonces cargara las imagenes de la carpate una por una por ejem si tengo avionderecha1, avionderecha2, etc.me abrira primero el avionderecha1 y segura con avionderecha2 bay! =D |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Control de Sonido con Delphi | EdwinFC | API de Windows | 2 | 04-02-2009 14:25:43 |
sonido y microfono en delphi | cmm07 | Varios | 0 | 07-04-2008 14:59:18 |
Cargar dll no delphi 5 | Mike Deet | API de Windows | 0 | 10-03-2008 02:00:45 |
transformar datos en sonido con delphi y sacarlos por la tarjeta de sonido | Johnnywin | Internet | 3 | 21-09-2006 20:49:11 |
Agregar sonido en Delphi | jescar | .NET | 2 | 17-09-2006 08:30:04 |
|