elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Emular desplazamiento
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Emular desplazamiento  (Leído 3,123 veces)
diego_lp

Desconectado Desconectado

Mensajes: 180


In a free world, who needs gates and windows?


Ver Perfil WWW
Emular desplazamiento
« en: 18 Febrero 2010, 21:27 pm »

Hola de nuevo, estoy volviendome loco con mi programa y necesito ayuda.
Les cuento mas o menos la idea a ver si a alguien se le ocurre algo:
Tengo un modulo en visual basic .net, que tiene un bucle principal, del cual no se la velocidad exacta pero es muy rapido  :rolleyes:
Por otro lado tengo un timer con un intervalo de 500 milisegundos.
Cada tick del timer mi programa se conecta a una base de datos y obtiene las coordenadas X Y de determinados objetos y guarda los objetos en un array.
El bucle principal simplemente actualiza las coordenadas del objeto con las nuevas obtenidas cada tick del timer.
Bueno el problemas es éste:
Si tomamos por ejemplo un objeto, que al hacer un tick el timer su propiedad X vale 10 (es decir objeto.X=10) y al volver a hacer tick la propiedad X del objeto vale 50, el bucle principal me actualiza directamente de 10 a 50.
Lo que yo necesito es que cada ciclo del bucle principal se actualize en 1, es decir, que el bucle principal por cada ciclo le agregue 1 al valor inicial de X hasta llegar a 50.
Necesito alguna idea de cómo hacer ésto, al menos en pseudocódigo, no logro razonarlo de la forma correcta para que me funcione.
Espero que se haya entendido  ;D
Muchas gracias.


En línea

Los programadores hicimos un pacto con Dios, él no hace sistemas y nosotros no hacemos milagros!
elmaro


Desconectado Desconectado

Mensajes: 301


Unas simples palabras...


Ver Perfil
Re: Emular desplazamiento
« Respuesta #1 en: 18 Febrero 2010, 22:06 pm »

Ponte el código que tienes y lo miro


En línea

MANULOMM


Desconectado Desconectado

Mensajes: 559


Erepublik.com


Ver Perfil
Re: Emular desplazamiento
« Respuesta #2 en: 18 Febrero 2010, 22:11 pm »

Ponte el código que tienes y lo miro

Lo mismo.

Atentamente,

Juan Manuel Lombana
Medellín - Colombia
En línea


diego_lp

Desconectado Desconectado

Mensajes: 180


In a free world, who needs gates and windows?


Ver Perfil WWW
Re: Emular desplazamiento
« Respuesta #3 en: 18 Febrero 2010, 22:52 pm »

COdigo del Timer:

Código:
    Public MyTimer As New System.Timers.Timer(1000) '1000 es el intervalo en milisegundos
    'Este es el procedimiento que ejecutara el timer
    Public Sub CodeToRun()
        'bloque de codigo que se ejecuta cada 1 segundo
        Try
            Dim Com As New OdbcConnection("dsn=mysql_juego;uid=xxxx;pwd=xxxxxx;")
            Com.Open()
            Dim Comando As New OdbcCommand("UPDATE `datos`.`usuarios` SET `X` = '" & hero.x & "' , `Y` = '" & hero.y & "' WHERE `usuarios`.`id` = " & id_usuario, Com)
            Comando.CommandType = CommandType.Text
            Comando.ExecuteNonQuery()
            Com.Close()
            Dim DA_usuarios As New OdbcDataAdapter("Select * From usuarios where mapa = '" & dt_usu.Rows(0).Item(4).ToString & "' and estado = 'libre' and id <> '" & id_usuario & "'", conexionBD) 'por segundo parametro se puede pasar un objeto conexion como directamente le string de conexion
            DA_usuarios.Fill(DS_usuarios, "id") 'manda ejecutar la sentecia SQL o el PA que le indicamos al adaptador y el resultado de esa ejecucion a guarda como un objeto datatable con el nombre del 2o parametro del fill dentro del dataset que le pasasmos como 1er parametro
            dt_usuarios = DS_usuarios.Tables("id")
            usuarios_online = dt_usuarios.Rows.Count
        Catch ex As Exception

        End Try

        Try
            If usuarios_online <> 0 Then
                For i = 0 To usuarios_online - 1
                    hero1 = New AnimatedSprite
                    hero1.Animations.Remove("WalkUp")
                    hero1.Animations.Remove("WalkRight")
                    hero1.Animations.Remove("WalkDown")
                    hero1.Animations.Remove("WalkLeft")
                    hero1.Animations.Add("WalkUp", New Animation(walkUp, 35))
                    hero1.Animations.Add("WalkRight", New Animation(walkRight, 35))
                    hero1.Animations.Add("WalkDown", New Animation(walkDown, 35))
                    hero1.Animations.Add("WalkLeft", New Animation(walkLeft, 35))
                    hero1.TransparentColor = Color.Magenta
                    If x1 > dt_usuarios.Rows(i).Item(5) Then
                        hero1.CurrentAnimation = "WalkLeft"
                    ElseIf x1 < dt_usuarios.Rows(i).Item(5) Then
                        hero1.CurrentAnimation = "WalkRight"
                    ElseIf y1 > dt_usuarios.Rows(i).Item(6) Then
                        hero1.CurrentAnimation = "WalkUp"
                    Else
                        hero1.CurrentAnimation = "WalkDown"
                    End If
                    x1 = dt_usuarios.Rows(i).Item(5)
                    y1 = dt_usuarios.Rows(i).Item(6)
                    hero1.Center = New Point(x1, y1)
                    heros.Insert(i, hero1)
                    nom_hero1 = New SdlDotNet.Sprites.TextSprite(dt_usuarios.Rows(i).Item(3), fuente, Color.White, New Point(hero1.X, hero1.Y - 15))
                    nom_heros.Insert(i, nom_hero1)
                    nom_hero1 = Nothing
                    hero1 = Nothing
                Next
            Else
                hero1 = Nothing
            End If
            dt_usuarios.Reset()
        Catch ex As Exception

        End Try
    End Sub

Codigo del bcle principal:
Código:
            mapa1.Render(Video.Screen)
            logo.Render(Video.Screen)
            hero.Render(Video.Screen)
            panel.Render(Video.Screen)
            texto3.Render(Video.Screen)
            Dim usu As New SdlDotNet.Sprites.TextSprite(usuarios_online, fuente, Color.White, New Point(20, 20))
            usu.Render(Video.Screen)
            If usuarios_online <> 0 Then
                For i = 0 To usuarios_online - 1
                    heros(i).Render(Video.Screen)
                    nom_heros(i).Render(Video.Screen)
                Next
            End If
« Última modificación: 18 Febrero 2010, 22:55 pm por diego_lp » En línea

Los programadores hicimos un pacto con Dios, él no hace sistemas y nosotros no hacemos milagros!
43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: Emular desplazamiento
« Respuesta #4 en: 19 Febrero 2010, 04:38 am »

Se puede hacer de este modo, actualizando la posición del pictureBox con una variable que sume o reste 1 a su valor, esta en C# solo para ubicarse.

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace WindowsFormsApplication1
  11. {
  12.    public partial class Form1 : Form
  13.    {
  14.        int i = 10;
  15.        int x = 0;
  16.        public Form1()
  17.        {
  18.            InitializeComponent();
  19.        }
  20.  
  21.        private void button1_Click(object sender, EventArgs e)
  22.        {
  23.            i = int.Parse(textBox1.Text);
  24.        }
  25.  
  26.        private void timer1_Tick(object sender, EventArgs e)
  27.        {
  28.            if (pictureBox1.Location.X < i)
  29.            {
  30.                x++;
  31.                Point nPos = new Point(x, 158);
  32.                pictureBox1.Location = nPos;
  33.                this.Text = pictureBox1.Location.X.ToString();
  34.  
  35.            }
  36.            else if (pictureBox1.Location.X > i)
  37.            {
  38.                x--;
  39.                Point nPos = new Point(x, 158);
  40.                pictureBox1.Location = nPos;
  41.                this.Text = pictureBox1.Location.X.ToString();
  42.            }
  43.  
  44.        }
  45.  
  46.    }
  47. }
  48.  
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Emular GBA en NDS?
Juegos y Consolas
wakas 0 2,122 Último mensaje 9 Julio 2011, 17:45 pm
por wakas
zoom y desplazamiento de un mapa en jquery
PHP
marik81 1 1,994 Último mensaje 14 Enero 2017, 09:54 am
por ThinkByYourself
Ejercicio en ensamblador suma-desplazamiento
ASM
Lariscal23 0 2,112 Último mensaje 16 Abril 2022, 11:31 am
por Lariscal23
Barra de desplazamiento
Dudas Generales
gande876 2 5,499 Último mensaje 30 Julio 2022, 16:13 pm
por Machacador
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines