public void resetGame() { Cobra = new Modelo(); cobraLength = 1; CobraFull = new List <Modelo>(); directionHistory = new List <int>(); directionHistory.Add(1); direcaoCobra = 1; //1: X+ 2: Z+ 3: X- 4: Z- LModelos = new List <Modelo>(); Comida = new List <Modelo>(); Obstaculos = new List <Modelo>(); Cobra.LerFicheiro("..\\..\\loadModelos\\cubo.obj"); Cobra.Translacao(0, 0.5f, 0); fieldSize = 100; currentPont = 0; Matriz = new Dictionary <string, List <Modelo> >(); Matriz["food"] = new List <Modelo>(); Matriz["obstaculos"] = new List <Modelo>(); Invoke(new MethodInvoker(delegate() { pontLabel.Text = string.Format("Pontuação: " + currentPont); maxPontLabel.Text = string.Format("Pontuação máxima: " + maxPont); })); }
public void aumentarCobra() { Modelo cobraPart = new Modelo(); cobraPart.LerFicheiro("..\\..\\loadModelos\\snakeBody.obj"); if (LModelos.Count > 0) { switch (directionHistory[directionHistory.Count - 1 - LModelos.Count - 1]) { case 1: cobraPart.Translacao(LModelos[LModelos.Count - 1].getX() - 1, LModelos[LModelos.Count - 1].getY(), LModelos[LModelos.Count - 1].getZ()); break; case 2: cobraPart.Translacao(LModelos[LModelos.Count - 1].getX(), LModelos[LModelos.Count - 1].getY(), LModelos[LModelos.Count - 1].getZ() - 1); break; case 3: cobraPart.Translacao(LModelos[LModelos.Count - 1].getX() + 1, LModelos[LModelos.Count - 1].getY(), LModelos[LModelos.Count - 1].getZ()); break; case 4: cobraPart.Translacao(LModelos[LModelos.Count - 1].getX(), LModelos[LModelos.Count - 1].getY(), LModelos[LModelos.Count - 1].getZ() + 1); break; } } else { switch (directionHistory[directionHistory.Count - 1]) { case 1: cobraPart.Translacao(Cobra.getX() - 2, Cobra.getY(), Cobra.getZ()); break; case 2: cobraPart.Translacao(Cobra.getX(), Cobra.getY(), Cobra.getZ() - 2); break; case 3: cobraPart.Translacao(Cobra.getX() + 2, Cobra.getY(), Cobra.getZ()); break; case 4: cobraPart.Translacao(Cobra.getX(), Cobra.getY(), Cobra.getZ() + 2); break; } } LModelos.Add(cobraPart); cobraLength++; removeFood(Cobra.getX(), Cobra.getZ()); incrementPoints(); }
public void randomPosition(object source, ElapsedEventArgs e) { bool foodOcupado = true; bool obstOcupado = true; while (foodOcupado == true) { int newValueX = rndNumber.Next(1, fieldSize); int newValueY = rndNumber.Next(1, fieldSize); if (foodMatrix[newValueX, newValueY] != 1 && obstaclesMatrix[newValueX, newValueY] != 1) { Modelo comida = new Modelo(); comida.LerFicheiro("..\\..\\loadModelos\\maça.obj"); comida.Translacao(newValueX, 0.5, newValueY); foodMatrix[newValueX, newValueY] = 1; Matriz["food"].Add(comida); foodOcupado = false; } } while (obstOcupado == true) { int newValueX = rndNumber.Next(1, fieldSize); int newValueY = rndNumber.Next(1, fieldSize); if (obstaclesMatrix[newValueX, newValueY] != 1 && foodMatrix[newValueX, newValueY] != 1) { Modelo obstaculo = new Modelo(); obstaculo.LerFicheiro("..\\..\\loadModelos\\cubo.obj"); obstaculo.Translacao(newValueX, 0.5, newValueY); obstaclesMatrix[newValueX, newValueY] = 1; Matriz["obstaculos"].Add(obstaculo); obstOcupado = false; } } }
public SharpGLForm() { InitializeComponent(); TextArray = new Texture[5]; gl = openGLControl.OpenGL; for (int i = 1; i <= 4; i++) { TextArray[i - 1] = new Texture(); TextArray[i - 1].Create(gl, "..\\..\\Texturas\\Text" + i + ".bmp"); } TextArray[4] = new Texture(); TextArray[4].Create(gl, "..\\..\\Texturas\\Terrain.bmp"); this.KeyDown += new KeyEventHandler(keyPress); TX = 0; TY = 0; TZ = 0; Escala = 1.0; Incremento_Escala = 0.1; Sentido = 2; Em_Movimento = true; Cobra = new Modelo(); cobraLength = 1; CobraFull = new List <Modelo>(); directionHistory = new List <int>(); directionHistory.Add(1); direcaoCobra = 1; //1: X+ 2: Z+ 3: X- 4: Z- LModelos = new List <Modelo>(); Comida = new List <Modelo>(); Obstaculos = new List <Modelo>(); Cobra.LerFicheiro("..\\..\\loadModelos\\cubo.obj"); Cobra.Translacao(0, 0.5f, 0); fieldSize = 100; currentPont = 0; maxPont = 0; pontLabel.TextChanged += new System.EventHandler(this.updateScreenPont); foodMatrix = new int[fieldSize, fieldSize]; obstaclesMatrix = new int[fieldSize, fieldSize]; timer = new System.Timers.Timer(); timer.Elapsed += new ElapsedEventHandler(timerMovement); timer.Interval = 100; timer.Enabled = true; extrasTimer = new System.Timers.Timer(); extrasTimer.Elapsed += new ElapsedEventHandler(randomPosition); extrasTimer.Interval = 6000; extrasTimer.Enabled = true; extrasTimer.AutoReset = true; rotatetimer = new System.Timers.Timer(); rotatetimer.Elapsed += new ElapsedEventHandler(rotateFunction); rotatetimer.Interval = 100; rotatetimer.Enabled = true; Matriz = new Dictionary <string, List <Modelo> >(); Matriz["food"] = new List <Modelo>(); Matriz["obstaculos"] = new List <Modelo>(); rndNumber = new Random(); }
public void timerMovement(object source, ElapsedEventArgs e) { switch (direcaoCobra) { case 1: if (Cobra.getX() < fieldSize - 2) { Cobra.Translacao(1, 0, 0); directionHistory.Add(1); } break; case 2: if (Cobra.getZ() < fieldSize - 2) { Cobra.Translacao(0, 0, 1); directionHistory.Add(2); } break; case 3: if (Cobra.getX() > 0) { Cobra.Translacao(-1, 0, 0); directionHistory.Add(3); } break; case 4: if (Cobra.getZ() > 0) { Cobra.Translacao(0, 0, -1); directionHistory.Add(4); } break; } foreach (Modelo M in Matriz["food"].ToArray()) { if (Cobra.Colide(M)) { aumentarCobra(); removeFood(M.getX(), M.getZ()); incrementPoints(); } } for (int i = 0; i < LModelos.Count - 1; i++) { if (Cobra.Colide(LModelos[i])) { DialogResult resultado = MessageBox.Show("Vamos jogar mais uma vez?", "Fim do jogo", MessageBoxButtons.OK); if (resultado == DialogResult.OK) { resetGame(); } } } foreach (Modelo M in Matriz["obstaculos"].ToArray()) { if (Cobra.Colide(M)) { removeObstacle(M.getX(), M.getZ()); decrementPoints(); } } for (int i = 1; i <= LModelos.Count; i++) { if (directionHistory.Count > LModelos.Count) { switch (directionHistory[directionHistory.Count - i - 1]) { case 1: LModelos[i - 1].Translacao(1, 0, 0); break; case 2: LModelos[i - 1].Translacao(0, 0, 1); break; case 3: LModelos[i - 1].Translacao(-1, 0, 0); break; case 4: LModelos[i - 1].Translacao(0, 0, -1); break; } } else { switch (directionHistory[directionHistory.Count - 1]) { case 1: LModelos[0].Translacao(1, 0, 0); break; case 2: LModelos[0].Translacao(0, 0, 1); break; case 3: LModelos[0].Translacao(-1, 0, 0); break; case 4: LModelos[0].Translacao(0, 0, -1); break; } } } }