private void Loop() { var threadMaquina = new Thread(() => { try { while (!maquinaDeTuring.HaFinalizado()) { if (maquinaDeTuring.EstaPausada()) { return; } maquinaDeTuring = maquinaDeTuring.Step(); var cintaProcesada = maquinaDeTuring.Cabezal.ObtenerCintaProcesada(); EscribirCintaProcesada(cintaProcesada); ResaltarCaracterEntrada(); ResaltarFilaTablaDeTransiciones(); IncrementarPasos(maquinaDeTuring.Pasos.ToString()); Thread.Sleep(maquinaDeTuring.IntervaloDeTiempo * 1000); } Finalizo(maquinaDeTuring.EstadoActual); } catch (ArgumentException ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { MessageBox.Show("Ocurrió un problema: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }); threadMaquina.Start(); }
private void btnGenerar_Click(object sender, EventArgs e) { try { Validar(); maquinaDeTuring = new MaquinaDeTuring( txtEstadoInicial.Text.Trim(), new Cabezal(new List <char>(rtbEntrada.Text.Trim().ToCharArray())), dgvTablaTransiciones, int.Parse(txtIntervaloTiempo.Text)); //Acciones sobre los controles de la sección configuración. //Textbox: rtbEntrada.Enabled = false; rtbSalida.Enabled = false; txtEstadoInicial.Enabled = false; txtIntervaloTiempo.Enabled = false; txtEstado.Enabled = false; txtLeer.Enabled = false; txtEscribir.Enabled = false; txtEstadoSiguiente.Enabled = false; //ComboBox: cmbCargarPruebas.Enabled = false; cmbDireccion.Enabled = false; //Button: btnGenerar.Enabled = false; btnEditar.Enabled = true; btnLimpiar.Enabled = false; btnAgregar.Enabled = false; //Acciones sobre los controles de la sección acciones //Button: btnCorrer.Enabled = true; btnSiguiente.Enabled = true; btnPausar.Enabled = false; btnDetener.Enabled = false; //Flag para eliminar una fila de la grilla. PermiteBorrarFila = false; MessageBox.Show("La máquina de turing se ha generado correctamente, comience a utilizarla desde el panel de acciones.", "Máquina de turing", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (ArgumentException ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { MessageBox.Show("Ocurrió un problema: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void btnDetener_Click(object sender, EventArgs e) { try { if (maquinaDeTuring != null) { maquinaDeTuring = new MaquinaDeTuring( txtEstadoInicial.Text.Trim(), new Cabezal(new List <char>(rtbEntrada.Text.Trim().ToCharArray())), dgvTablaTransiciones, int.Parse(txtIntervaloTiempo.Text)); maquinaDeTuring.CambiarEstadoAPausa(); foreach (DataGridViewRow dataGridViewRow in dgvTablaTransiciones.Rows) { dataGridViewRow.DefaultCellStyle.BackColor = SystemColors.Window; } rtbEntrada.Select(0, rtbEntrada.Text.Length); rtbEntrada.SelectionColor = SystemColors.WindowText; rtbSalida.Text = string.Empty; txtEstadoFinal.Text = string.Empty; txtEstadoFinal.BackColor = SystemColors.Window; txtPasos.Text = "0"; dgvTablaTransiciones.Update(); rtbEntrada.Update(); } btnEditar.Enabled = true; btnCorrer.Enabled = true; btnSiguiente.Enabled = true; btnPausar.Enabled = false; btnDetener.Enabled = false; } catch (Exception ex) { MessageBox.Show("Ocurrió un problema: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void btnStep_Click(object sender, EventArgs e) { try { if (maquinaDeTuring == null) { MessageBox.Show("Por favor, genere una maquina de turing.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } maquinaDeTuring.CambiarEstadoAEjecutandose(); btnEditar.Enabled = false; btnCorrer.Enabled = true; btnSiguiente.Enabled = true; btnPausar.Enabled = false; btnDetener.Enabled = true; if (maquinaDeTuring.HaFinalizado()) { Finalizo(maquinaDeTuring.EstadoActual); txtEstadoFinal.Text = maquinaDeTuring.EstadoActual; return; } maquinaDeTuring = maquinaDeTuring.Step(); rtbSalida.Text = maquinaDeTuring.Cabezal.ObtenerCintaProcesada(); ResaltarCaracterEntrada(); ResaltarFilaTablaDeTransiciones(); IncrementarPasos(maquinaDeTuring.Pasos.ToString()); } catch (ArgumentException ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { MessageBox.Show("Ocurrió un problema: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }