Ajuda com codigo de Jogo

7 respostas
jwoliver

Olá galera, estou com um erro no meu codigo e nao consigo decifrá-lo,
é um jogo de Damas em JavaFX.
Alguem pode me ajudar e dar uma olhada?
Peço por favor, estou encima da data de entrega.

7 Respostas

V

Cara,vc precisa nos dizer que erro q esta dando,mostrar o que esta ocorrendo no console,para podermos te ajudar…alias se for algum erro de linguagem msm nada que uma debugada minuciosa nao lhe mostre o que esta ocorrendo de errado…

jwoliver

O erro que aparece é o seguinte:

Note: C:\Users\usuario\Documents\NetBeansProjects\testarDamas\src\testardamas\Main.fx uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Uso o netBeans.
Sou iniciante em JavaFX, portanto esta dificil conseguir descobrir meu próprio erro.

V

pssss…axo q isso eh o teu compilador nao esta conseguindo compilar o teu codio por algum motivo,provavelmente o uso de algum metodo deprecated…acredito q pode ser isso…nao tenho certeza. :?:
Tenta o seguinte:
1-selecione seu projeto
2-Menu Arquivo->Project Properties->build(ou Construçao se seu Netbeans estive em portugues)->Compiler(Compilaçao) e em “Opçoes Adicionais do compilador:” coloque
-Xlint:unchecked ou -Xlint:Deprecation
flw :wink:

jwoliver

Não existe este caminho no meu NetBeans, deve ser a versão.
Qual versão você usa cara?
Estava usando a 6.8, mas estou instalando a versão 7 porq me disseram que é melhor.
Voce chegou a compilar o codigo e ele funcionou?
Valew mwu brother!!

V

cara eu uso a 6.8 deveria ser igual,mas tenta selecionar o teu projeto e ir nas propriedades dele lah encontrara as configuraçoes do compilador…esse seu erro acredito que seja por estar usando uma api deprecated,algum metodo ou classe de versoes anteriores do java,por isso teu compilador alerta sobre isso…geralmente tem uma api ou outros metodos que substitui esses deprecated

V

flw

jwoliver

Valeu manu, mas agora é minha lógica que ta dificultando o algoritmo.
Cara é só um detalhe, se alguem puder me ajudar Pelo Amor de Deus!!!
Se eu não entregar amanhã funcionando perco seis meses de estudo na facul…

O código é esse:

/*
 * Main.fx
 *
 * Created on 02/07/2011, 19:29:52
 */

package testardamas;

import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.paint.*;
import javafx.scene.effect.*;
import javafx.scene.effect.light.*;
import javafx.scene.shape.*;
import javafx.scene.input.*;
import javafx.ext.swing.*;
import javafx.animation.*;
import java.lang.*;
import java.util.*;

def SIZE = 90;  //tamanho de uma casa
def SIZE2 = SIZE/2; //metade de uma casa
def SIZEP = 36; //raio de uma peca

def DEBUG = true;

class Peca extends CustomNode{
	var x: Number;
	var y: Number;
	var i: Integer;
	var j: Integer;
	var jogador: Integer;
	var jogo: Jogo;
	var dama: Boolean = false;
	init{
		updateXY();
		jogo.tabuleiro.put( IJtoIndex(i,j) , this);
	}
	public function podeComer():Boolean{

		if(i+2 <= 7 and j+2 == 0 and j+2 == 0 and j-2 >= 0){
			if(jogo.tabuleiro.containsKey(IJtoIndex(i-1,j-1))){
				var peca: Peca = jogo.tabuleiro.get(IJtoIndex(i-1,j-1)) as Peca;
				if(peca.jogador != this.jogador){
					if(not jogo.tabuleiro.containsKey(IJtoIndex(i-2,j-2))){
						return true;
					}
				}
			}
		}

		if(i+2 == 0){
			if(jogo.tabuleiro.containsKey(IJtoIndex(i+1,j-1))){
				var peca: Peca = jogo.tabuleiro.get(IJtoIndex(i+1,j-1)) as Peca;
				if(peca.jogador != this.jogador){
					if(not jogo.tabuleiro.containsKey(IJtoIndex(i+2,j-2))){
						return true;
					}
				}
			}
		}

		return false;
	}
	public function IJtoIndex(i: Integer, j: Integer):Integer{
		return j*8 + i;
	}
	public function toIJ(valor: Number):Integer{
		return Math.round((valor - SIZE2) / SIZE).intValue();
	}
	public function toXY(valor: Integer):Number{
		return valor * SIZE + SIZE2;
	}
	public function updateXY():Void{
		x = toXY(i);
		y = toXY(j);
	}
	public function updateIJ():Void{
		jogo.tabuleiro.remove(IJtoIndex(i,j));
		i = toIJ(x);
		j = toIJ(y);
		jogo.tabuleiro.put(IJtoIndex(i,j), this);

		if((jogador == 1 and j == 7) or (jogador == 2 and j == 0)){
			dama = true;
		}
	}
	public function comer():Void{
		jogo.tabuleiro.remove(IJtoIndex(i,j));
		this.visible = false;
	}
	override function create():Node{
		return Circle{
			centerX: bind x centerY: bind y radius: SIZEP
			opacity: bind if(jogo.jogador == jogador) 1.0 else 0.5

			fill: bind RadialGradient{
				centerX: 0.5 centerY: 0.5
				focusX: 0.3 focusY: 0.3
				radius: 0.5
				proportional: true
				stops:[
					Stop{
						offset: 0.0
						color: if(jogador == 1)Color.color(1,0.8,0.8)else Color.LIGHTBLUE
					}
					Stop{
						offset: 0.4
						color: if(jogador == 1)Color.VIOLET else Color.GREEN
					}
					Stop{
						offset: 0.8
						color: if(jogador == 1)Color.DARKVIOLET else Color.DARKGREEN
					}
					Stop{
						offset: 1.0
						color: if(dama)Color.YELLOW else Color.BLACK
					}
				]
			}

			effect: DropShadow{
				offsetX: 1 offsetY: 1
				radius:3
				spread: 0.1
			}

			//1 movendo
			onMouseDragged: function(e: MouseEvent):Void{
				if(this.jogador != jogo.jogador){
					return;
				}
				x = e.sceneX;
				y = e.sceneY;
			}
			//2 movendo e soltando no lugar correto
			onMouseReleased: function(e: MouseEvent):Void{
				if(this.jogador != jogo.jogador){
					return;
				}

				x = e.sceneX;
				y = e.sceneY;

				var ii = toIJ(x);
				var jj = toIJ(y);

				var dx = Math.abs(ii-i);
				var dy = Math.abs(jj-j);

				var index = IJtoIndex(ii,jj);




 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////








 if( (dx > 0 or dy > 0) and dx == dy ){//se moveu (e na diagonal)
	if(DEBUG)println("moveu");
	if( (ii >= 0 and jj > j) or(jogador == 2 and ii > 0 and jj<j)){// andou pra frente
		if(DEBUG)println("andou pra frente");
                  updateIJ();
                  updateXY();
                  println(i);
                  println(j);
                  jogo.mudarJogador();
		}else{//andou pra traz
                     if(DEBUG)println("andou pra traz");
                     updateXY();
		}
                   if(dx>1){//mais que uma casa
                        if(DEBUG)println("mais que 1 casa");

                        if(dx == 2){//2 casas
                                if(DEBUG)println("2 casas");

                                var i_med = (ii+i)/2;
                                var j_med = (jj+j)/2;
                                var index_med = IJtoIndex(i_med,j_med);

                                if(jogo.tabuleiro.containsKey(index_med)){//pulou peça
                                        if(DEBUG)println("pulou peça");

                                        var peca: Peca = jogo.tabuleiro.get(index_med) as Peca;

                                        if(peca.jogador != this.jogador){//outro jogador
                                                if(DEBUG)println("pulou peça de outro jogador");

                                                peca.comer();

                                                updateIJ();
                                                updateXY();

                                                if(not podeComer()){
                                                   jogo.mudarJogador();
                                                }

                                        }else{
                                                if(DEBUG)println("pulou peça do mesmo jogador");
                                                updateXY();
                                        }
                                }else{//nao pulou peça
                                        if(DEBUG)println("nao pulou peça");

                                        updateXY();
                                }
                        }else{
                                if(DEBUG)println("mais que 2 casas");
                                updateXY();
                        }
                }
        }

else{//se nao moveu ou nao foi na diagonal
    if(DEBUG)println("nao moveu");
	updateXY();
}

if(dx>4){//fora do tabuleiro
    if(DEBUG)println("fora do tabuleiro");
    updateXY();
    }







  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////







                                
				

			
			}
			//3 movendo pra frente
			onMousePressed: function(e: MouseEvent):Void{
				toFront();
			}
		}
	}
}

class Jogo{
	var tabuleiro: Hashtable = new Hashtable();
	var jogador = 2;//azul
	var pecas: Peca[];
	init{
		pecas = for(i in [0..4])
			for(j in [0..1])[
				Peca{
					i: if((j mod 2) == 0) i*2 else i*2+1
					j: j
					jogador: 1
					jogo: this
				}
				Peca{
					i: 9 - (if((j mod 2) == 0) i*2+1 else i*2)
					j: j + 6
					jogador: 2
					jogo: this
				}
			];
	}
	public function mudarJogador():Void{
		if(jogador == 1){
			jogador = 2;
		}else{
			jogador = 1;
		}
                println(jogador);
	}
	public function reset():Void{
		tabuleiro.clear();
		var index = 0;
		for(i in [0..4]){
			for(j in [0..1]){
				var peca: Peca = pecas[index++];
				peca.i = if((j mod 2) == 0) i*2 else i*2+1;
				peca.j = j;
				peca.updateXY();
				peca.visible = true;
				peca.dama = false;
				tabuleiro.put(peca.IJtoIndex(peca.i,peca.j), peca);

				peca = pecas[index++];
				peca.i = 9 - (if((j mod 2) == 0) i*2 else i*2+1);
				peca.j = j + 5;
				peca.updateXY();
				peca.visible = true;
				peca.dama = false;
				tabuleiro.put(peca.IJtoIndex(peca.i,peca.j), peca);
			}
		}
	}
}

var jogo: Jogo = Jogo{};

Stage{
	title: "Damas"
	scene: Scene{
		width: SIZE*10
		height: SIZE*8
		fill: Color.WHITE
		content: [
			Group{
				content: for(i in [0..4])
					for(j in [0..3])[
						Rectangle{
							x: i*2*SIZE y: j*2*SIZE
							width: SIZE height: SIZE
							fill: Color.GRAY
						}
						Rectangle{
							x: i*2*SIZE+SIZE y: j*2*SIZE+SIZE
							width: SIZE height: SIZE
							fill: Color.GRAY
						}
					]
				onKeyPressed: function(e: KeyEvent):Void{
					if(e.code == KeyCode.VK_SPACE){
						jogo.reset();
					}
				}
			}
			jogo.pecas
		]
	}
}

É um jogo de Damas, as peças estão comendo ao contrario, eu só nao consigo fazer akele primeiro “if” lá do motor.
E as verdes estao voltando, nao poderiam…
Por favor, alguem me dê uma força ai…

Criado 2 de julho de 2011
Ultima resposta 4 de jul. de 2011
Respostas 7
Participantes 2