Академический Документы
Профессиональный Документы
Культура Документы
PRODUCCION Y SERVICIOS
INGENIERIA INDUSTRIAL
Curso:
SISTEMA DE INFORMACIÓN
Trabajo:
INFORMES DE LAS PRACTICAS DE LABORATORIO
Docente:
ING. IZMAEL VELIZ VILCA
Integrantes:
20153622;achoquehuanca@unsa.edu.pe
Año:
4to – GRUPO “B”
AREQUIPA-2020
}
INDICE
INFORMES DE LAS PRACTICAS DE LABORATORIO........................................................................2
PRACTICA 1...............................................................................................................................2
OBJETIVO..............................................................................................................................2
DESCRIPCION DEL PROCESO.................................................................................................2
CODIGOS DEL FORMULARIO.................................................................................................3
EXPLICACIÓN........................................................................................................................8
TRABAJO FINAL.....................................................................................................................9
PRACTICA 2: EVENTOS DEL MOUSE Y TECLADO.......................................................................9
OBJETIVO:.............................................................................................................................9
DESCRIPCION DEL PROCESO...............................................................................................10
CODIGO DEL FORMULARIO................................................................................................10
EXPLICACIÓN......................................................................................................................12
TRABAJO FINAL...................................................................................................................13
PRACTICA 4.............................................................................................................................13
PRACTICA 5: AGENTE VIAJERO...............................................................................................15
Objetivo del programa.......................................................................................................16
Métodos utilizados.............................................................................................................16
Interfaz...............................................................................................................................16
Funcionamiento.................................................................................................................16
Restricciones......................................................................................................................18
Código interfaz...................................................................................................................18
Código Crear Ruta..............................................................................................................19
Código Método Held Karp..................................................................................................19
Códido Método Vecino más cercano..................................................................................20
Código Pintor:.....................................................................................................................20
BIBLIOGRAFIA.............................................................................................................................21
1
INFORMES DE LAS PRACTICAS DE LABORATORIO
PRACTICA 1
En esta práctica número 1, hemos desarrollado un juego en Visual Basic 2010 haciendo
simulaciones de juego muy conocido en los años 90 que es “THE SNAKE” a partir de
En este juego se usó varios controles y operando del Visual Basic 2010, lo cual nos
Timer
Keycode
Resources
Funciones Matrices
OBJETIVO
Presentar un tema libre con uso de control multimedia a partir de las direccionales
encontradas en el teclado.
2
distribución de imágenes de nuestro juego, importación de imágenes y
form_keyup
3
If movi = 3 Then cy(0) = cy(0) + 30 : lblsnake.Image =
My.Resources.pacsabajo
If movi = 4 Then cy(0) = cy(0) - 30 : lblsnake.Image =
My.Resources.pacsarriba
'comprobamos si serpiente se cruza... game over
For A As Short = 1 To lon
If cx(0) = cx(A) And cy(0) = cy(A) Then
tmrsnake.Enabled = False 'se para el juego por
cruzarce a si mismo
MsgBox("GAME OVER", MsgBoxStyle.Critical)
inicio_juego()
Exit Sub
End If
Next A
'comprobamos si sierpente toca los bloques GAME OVER
If mapa(cx(0) / 30, cy(0) / 30) <> " " Then
tmrsnake.Enabled = False 'se para el juego por cruzarce
a si mismo
MsgBox("GAME OVER", MsgBoxStyle.Critical)
inicio_juego()
Exit Sub
End If
'colocar la comida
If lblnum.Visible = False Then colocar_numero()
'comprobar si la serpiente coge la comida
If cx(0) = lblnum.Location.X And cy(0) = lblnum.Location.Y Then
If Val(lblnum.Text + 1) = 100 Then
lblnum.Text = 1
Else
lblnum.Text = Val(lblnum.Text + 1)
End If
lon += 1
cx(lon) = cx(lon - 1)
cy(lon) = cy(lon - 1)
'dibujar ese anillo
anillos(lon - 1).SetBounds(cx(lon), cy(lon), anillos(lon - 1).Width,
anillos(lon - 1).Height)
anillos(lon - 1).Visible = True
lblnum.Visible = False
End If
'dibujando la serpiente
lblsnake.SetBounds(cx(0), cy(0), lblsnake.Width, lblsnake.Height)
End Sub
4
anillos(A) = New Label
anillos(A).AutoSize = False
anillos(A).Size = New Size(30, 30)
anillos(A).Image = My.Resources.circulos
anillos(A).BackColor = Color.Transparent
Me.Controls.Add(anillos(A))
anillos(A).Visible = False
Next A
End Sub
Private Sub crear_bloque(ByVal col As Short, ByVal corX As Short, ByVal corY As
Short)
bloque = New PictureBox
bloque.Size = New Size(30, 30)
If col = 1 Then bloque.Image = My.Resources.pas
If col = 2 Then bloque.Image = My.Resources.pas
If col = 3 Then bloque.Image = My.Resources.pas
If col = 4 Then bloque.Image = My.Resources.pas
'-------------------------------- Para ingresar nuevas pantallas
bloque.BackColor = Color.Transparent
bloque.Location = New Point(corX, corY)
Me.Controls.Add(bloque)
End Sub
Private Sub asignar_matriz()
Dim x, y As Short
'leer los valores x,y de caracteres
For x = 0 To 29
For y = 0 To 21
mapa(x, y) = Mid(Lineam(y), x + 1, 1) 'lee una cadena de
carecteres(la linea q vamos a poner para el snake
Next y
Next x
5
Dim cnx, cny As Integer 'coordenadas del numero
Dim swpaso As Boolean = False 'switch para dar paso
Do
cnx = Int(30 * Rnd() + 0) 'numero aleatorio entre 0 y 29
cny = Int(22 * Rnd() + 0) 'numero aleatorio entre 0 y 21
If mapa(cnx, cny) = " " Then 'esta condicion es para evitar que no
se sobrepongan
swpaso = True
End If
'Comprobamos coordenadas numero si coincide anillos o cabeza
For A As Short = 0 To lon
If (cnx * 30) = cx(A) And (cny * 30) = cy(A) Then
swpaso = False
End If
Next A
Loop Until swpaso = True
lblnum.Location = New Point(cnx * 30, cny * 30)
lblnum.Visible = True 'visualizamos el numero
End Sub
6
Private Sub mapa_bosque()
tmrsnake.Interval = 400
'Me.BackgroundImage = My.Resources.paisaje2
Lineam(0) = "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
Lineam(1) = "R R"
Lineam(2) = "R R"
Lineam(3) = "R R"
Lineam(4) = "R R"
Lineam(5) = "R R"
Lineam(6) = "R R"
Lineam(7) = "R R"
Lineam(8) = "R R"
Lineam(9) = "R RR R"
Lineam(10) = "R RR R"
Lineam(11) = "R RR R"
Lineam(12) = "R RR R"
Lineam(13) = "R R"
Lineam(14) = "R R"
Lineam(15) = "R R"
Lineam(16) = "R R"
Lineam(17) = "R R"
Lineam(18) = "R R"
Lineam(19) = "R R"
Lineam(20) = "R R"
Lineam(21) = "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
End Sub
7
Lineam(4) = "A AAAAAAAA A"
Lineam(5) = "A A"
Lineam(6) = "A A"
Lineam(7) = "A AAA A"
Lineam(8) = "A AAA A"
Lineam(9) = "A AAAAA A"
Lineam(10) = "A AAAAAAAAAAAAA A"
Lineam(11) = "A A"
Lineam(12) = "A AAAAAA A"
Lineam(13) = "A AAAAAAAA A"
Lineam(14) = "A AAAAAAAAAA A"
Lineam(15) = "A AAAAAAAAAA A"
Lineam(16) = "A AAAAAAAA A"
Lineam(17) = "A AAAAAAAAAAA A"
Lineam(18) = "A AAAAAAA A"
Lineam(19) = "AAAAAAAA A"
Lineam(20) = "AAAAAAAA A"
Lineam(21) = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
End Sub
EXPLICACIÓN
8
La serpiente podrá moverse en cualquier dirección, pero si choca con el
NIVEL 1: Lento
NIVEL 2: Normal
NIVEL 3: Rápido
Timer.
TRABAJO FINAL
9
PRACTICA 2: EVENTOS DEL MOUSE Y TECLADO
4. Crear una aplicación en Microsoft Visual Estudio llamada Eventos del mouse y
teclado.
Imports System.Drawing
10
Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs)
Handles PictureBox1.MouseMove
If Primeravez = 0 Then
Primeravez = 1
x1 = e.X
y1 = e.Y
Exit Sub
End If
x2 = e.X
y2 = e.Y
DifX = x2 - x1
DifY = y2 - y1
Me.Text = DifX
If e.X < PictureBox1.Width - Paso And e.X >= Paso And e.Y <=
PictureBox1.Height - Paso And e.Y >= Paso Then
PictureBox1.Cursor = Cursors.SizeAll
If (Movimiento1 = True) Then
If (primovi1 = False) Then
primovi1 = True
posicionX1 = e.X
posicionY1 = e.Y
End If
If e.X < PictureBox1.Width - Paso And e.X >= Paso And e.Y <=
PictureBox1.Height - Paso And e.Y >= Paso Then
PictureBox1.Location = New Point(e.X + PictureBox1.Location.X
- posicionX1, e.Y + PictureBox1.Location.Y - posicionY1)
End If
End If
Else
If e.X <= Paso Or e.X >= PictureBox1.Width - Paso Then
PictureBox1.Cursor = Cursors.SizeWE
If estirar = 1 And e.X <= Paso Then
PictureBox1.Width = PictureBox1.Width - DifX
PictureBox1.Left = PictureBox1.Left + DifX
End If
If estirar = 1 And e.X >= PictureBox1.Width - Paso Then
PictureBox1.Width = PictureBox1.Width + DifX
End If
End If
If e.Y <= Paso Or e.Y >= PictureBox1.Height - Paso Then
PictureBox1.Cursor = Cursors.SizeNS
If estirar = 1 And e.Y <= Paso Then
PictureBox1.Height = PictureBox1.Height - DifY
PictureBox1.Top = PictureBox1.Top + DifY
End If
If estirar = 1 And e.Y >= PictureBox1.Height - Paso Then
PictureBox1.Height = PictureBox1.Height + DifY
End If
End If
End If
x1 = x2
y1 = y2
End Sub
Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs)
Handles PictureBox1.MouseDown
estirar = 1
Movimiento1 = True
PictureBox1.Cursor = Cursors.SizeAll
End Sub
Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs)
Handles PictureBox1.MouseUp
estirar = 0
11
Movimiento1 = False
primovi1 = False
PictureBox1.Cursor = Cursors.Default
End Sub
End Class
12
EXPLICACIÓN
En el presente ejercicio se usaron los eventos mouse dow, mouse move, mouse
up y Key press.
movimientos:
A: arriba
B: abajo
X: izquierda
Y: derecha
Timer.
TRABAJO FINAL
13
PRACTICA 4
14
Aplicación de clases y objetos
15
Objetivo del programa: Determinar la ruta más corta para pasar por cada ciudad una
sola vez y terminar en la ciudad de inicio.
Métodos utilizados:
Fuerza bruta o Held Karp: para cantidades de ciudades pequeñas (solución
óptima).
Vecino más cercano o ruta más corta: para cantidades pequeñas y grandes
(solución aproximada).
Interfaz:
Se buscó diseñar una interfaz simple, de fácil comprensión y manejo.
Funcionamiento:
16
1. Ingresar coordenadas: El programa lee las coordenas ingresadas de n ciudades en un
archivo “ .txt” . Este archivo debe contener únicamente las coordenadas x-y en orden y
Se elige el archivo del cuadro de diálogo que aparece al dar click en el botón
INGRESAR COORDENADAS. Los datos se cargaran automáticamente en el list box
Ciudades y a la vez se calculará la matriz de distancias.
2. Se selecciona el método a utilizar dando click a uno de los botones. Se carga en el picture box
los puntos de cada ciudad y se traza la ruta más corta.
17
Restricciones:
Se debe escalar las distancias de tal forma que resulten coordenadas iguales o menores que 10.
Solo se pueden ingresar coordenadas enteras, caso contrario se redondearán las ingresadas.
Código interfaz:
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Pantalla = PictureBox1.CreateGraphics()
OpenFileDialog1.Filter = "Archivo de Texto |*.txt"
End Sub
Private Sub btnAbrir_Click(sender As Object, e As EventArgs) Handles
btnAbrir.Click
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
btnAbrir.Text = OpenFileDialog1.SafeFileName
AbrirArchivo(OpenFileDialog1.FileName)
MostrarCiudades()
CalcularDistancias()
MostrarDistancias()
Desbloquear()
End If
End Sub
Sub Desbloquear()
btnCercano.Enabled = True
btnHP.Enabled = True
End Sub
18
DibujarCiudades()
End Class
CompararRuta(Final)
Else
Dim Actual As Integer = Visitados(Visitados.Count - 1)
For A As Integer = 0 To Restantes.Count - 1
Dim Siguiente As Integer = Restantes(A)
19
CalcularRutas(Visto, Resto)
Next
End If
End Sub
Private Sub CompararRuta(Ruta As List(Of Integer))
Dim Distancia As Single = DistanciaTotal(Ruta)
If (Distancia < MejorDistancia) Or (MejorDistancia = -1) Then
MejorDistancia = Distancia
MejorRuta = Ruta
End If
End Sub
Private Function DistanciaTotal(Ruta As List(Of Integer)) As Single
Dim Total As Single = 0
For I As Integer = 0 To Cantidad - 1
Dim Anterior As Integer = Ruta(I)
Dim Actual As Integer = Ruta(I + 1)
Total += Distancias(Actual, Anterior)
Next
Return Total
End Function
End Module
Código Pintor:
Module Pintor
Public Pantalla As Graphics
Public Escala As Single = 28
Sub DibujarCiudades()
Pantalla.Clear(Color.White)
For A As Integer = 0 To Cantidad - 1
Dim X As Integer = UbicacionesX(A) * Escala
Dim Y As Integer = (300 - UbicacionesY(A) * Escala)
DibujarCiudad(X, Y, A + 1)
Next
20
End Sub
Sub DibujarCiudad(X As Integer, Y As Integer, Nombre As Integer)
Pantalla.FillEllipse(Brushes.Black, X - 2, Y - 2, 4, 4)
Pantalla.DrawString(Nombre, New Font("Times New Roman", 8),
Brushes.Black, X, Y)
End Sub
Sub DibujarCamino(Camino As List(Of Integer))
Dim X0, Y0 As Integer
For A As Integer = 0 To Cantidad
Dim I As Integer = Camino(A)
Dim X As Integer = UbicacionesX(I) * Escala
Dim Y As Integer = (300 - UbicacionesY(I) * Escala)
If A > 0 Then
Pantalla.DrawLine(Pens.Red, X0, Y0, X, Y)
End If
X0 = X
Y0 = Y
Next
End Sub
End Module
21
BIBLIOGRAFIA
https://www.youtube.com/watch?v=OuhQgTS-XrY&t=547s
https://www.youtube.com/watch?v=gFidtF5j5dk
https://www.youtube.com/watch?v=jrFnKJW1XEI
https://www.youtube.com/watch?v=NUCi9XjU-dQ
https://www.youtube.com/watch?v=2S2nccRhqOQ
22