2014-11-28, 18:49
  #1
Medlem
Hej!

Jag ska skriva koden för några metoder så ska i princip fylla i dem men skulle behöva lite hjälp. Koden/uppgiften ser ut såhär: http://puu.sh/d8Xz2/3c31c38863.png och http://puu.sh/d8XDe/909568b684.png . Min kod ser ut såhär hittils: http://pastebin.com/Z7887kbi. Tänkte höra om jag fyllt i metoderna rätt hittils och hur jag ska göra på isThreatened? Hur ska man tänka där?
Citera
2014-11-28, 18:56
  #2
Medlem
kinesarsles avatar
Kod:
import java.util.Random;
     
    public class Queens {
           
            private Square[][] board;
            private int n;
           
            public Queens(int n)
            {
                    this.n = n;
                    board = new Square[n][n];
                    resetBoard();
                    setNewRandomPositioning();
            }
           
            private void resetBoard()
            {
                    board = new Square[][]; // Reset the board
            }
           
            public void setNewRandomPositioning()
            {
                    board = new Square[][]; //Reset the board
                    Random r = new Random();
                    n = r.nextInt(); // Fill with random
                    board = new Square[n][n]; // Fills the board with n queens
            }
           
           
            private int countQueens()
            {
                    int counter = n*n; // If you muliply n*n, you will get number of n in the board
                    return counter;        
            }
           
            private boolean isThreatened(int i, int j, int dx, int dy)
            {
                   
            }
     
    }
Om du har gjort rätt borde du kunna kontrollera själv. Om de kompilerar och fungerar som du ska har du gjort rätt. Testa olika indata till dem. Returneras rätt resultat?

För isThreatened rekommenderar jag att du börjar med pseudokod och förfinar den gradvis tills dess du kan skriva koden.
Citera
2014-11-28, 19:41
  #3
Medlem
Citat:
Ursprungligen postat av kinesarsle
Kod:
import java.util.Random;
     
    public class Queens {
           
            private Square[][] board;
            private int n;
           
            public Queens(int n)
            {
                    this.n = n;
                    board = new Square[n][n];
                    resetBoard();
                    setNewRandomPositioning();
            }
           
            private void resetBoard()
            {
                    board = new Square[][]; // Reset the board
            }
           
            public void setNewRandomPositioning()
            {
                    board = new Square[][]; //Reset the board
                    Random r = new Random();
                    n = r.nextInt(); // Fill with random
                    board = new Square[n][n]; // Fills the board with n queens
            }
           
           
            private int countQueens()
            {
                    int counter = n*n; // If you muliply n*n, you will get number of n in the board
                    return counter;        
            }
           
            private boolean isThreatened(int i, int j, int dx, int dy)
            {
                   
            }
     
    }
Om du har gjort rätt borde du kunna kontrollera själv. Om de kompilerar och fungerar som du ska har du gjort rätt. Testa olika indata till dem. Returneras rätt resultat?

För isThreatened rekommenderar jag att du börjar med pseudokod och förfinar den gradvis tills dess du kan skriva koden.

Okej men måste ha gjort klart allt innan jag kan kompilera så kan inte testa ännu. Förstår inte riktigt vad isThreatened metoden ska göra direkt, kan du förklara för jag verkar inte greppa?
Citera
2014-11-28, 19:47
  #4
Medlem
kinesarsles avatar
Citat:
Ursprungligen postat av pkj
Okej men måste ha gjort klart allt innan jag kan kompilera så kan inte testa ännu. Förstår inte riktigt vad isThreatened metoden ska göra direkt, kan du förklara för jag verkar inte greppa?
Väldigt svårt att säga. Stod det inga specifikationer för varje funktion?

Jag kan tänka mig att det är en funktion som returnerar T om drottningen på position (i,j) hotar rutan (dx,dy).
Citera
2014-11-28, 20:08
  #5
Medlem
kinesarsles avatar
Och nej, man måste inte ha gjort klart allt för att testa delar av koden. Kolla följande exempel:

Kod:
class mathClass
{
   // Addera två tal
   public static int add(int a, int b) {
       return a+b;
   }

   // Multiplicera två tal
   public static int mul(int a, int b) {
      return 666;
   }
}
   

Uppenbarligen fungerar inte den andra metoden, men det hindrar dig inte från att testa den första med några olika värden.
Citera
2014-11-28, 20:34
  #6
Medlem
Citat:
Ursprungligen postat av kinesarsle
Väldigt svårt att säga. Stod det inga specifikationer för varje funktion?

Jag kan tänka mig att det är en funktion som returnerar T om drottningen på position (i,j) hotar rutan (dx,dy).

Nope, man fick bara koden och sen ska man skriva koden för de metoderna där det står TODO. De har skrivit vad man ska göra men tycker de är en luddig beskrivning.
Citera
2014-11-29, 12:28
  #7
Medlem
kinesarsles avatar
Citat:
Ursprungligen postat av pkj
Nope, man fick bara koden och sen ska man skriva koden för de metoderna där det står TODO. De har skrivit vad man ska göra men tycker de är en luddig beskrivning.
Posta uppgiften i sin helhet.
Citera
2014-11-29, 13:06
  #8
Medlem
Citat:
Ursprungligen postat av kinesarsle
Posta uppgiften i sin helhet.

Jag postade allt i uppgiften som man fick.
Citera
2014-11-29, 13:48
  #9
Medlem
kinesarsles avatar
Citat:
Ursprungligen postat av pkj
Jag postade allt i uppgiften som man fick.
Jag missade en av länkarna.

Funktionen isThreatened ska kolla om en drottning har en hotande drottning i en specifik riktning. Något i den här stilen borde fungera:

Kod:
x=i
y=j
while border not reached
   x+=dx
   y+=dy
   if occupied(x,y)
       return true
   else
       continue
return false
Citera
2014-11-29, 14:02
  #10
Medlem
Citat:
Ursprungligen postat av kinesarsle
Jag missade en av länkarna.

Funktionen isThreatened ska kolla om en drottning har en hotande drottning i en specifik riktning. Något i den här stilen borde fungera:

Kod:
x=i
y=j
while border not reached
   x+=dx
   y+=dy
   if occupied(x,y)
       return true
   else
       continue
return false

Okej är occupied I:et i enum som jag ska använda då och vad är border not reached?
Citera
2014-11-29, 14:12
  #11
Medlem
kinesarsles avatar
Citat:
Ursprungligen postat av pkj
Okej är occupied I:et i enum som jag ska använda då och vad är border not reached?
Det där är pseudokod. occupied(x,y) är någon funktion som returnerar true om det står någon på positionen x,y. Border not reached är något sätt att kontrollera att du inte har hamnat utanför brädet.
Citera
2014-11-29, 14:42
  #12
Medlem
Citat:
Ursprungligen postat av kinesarsle
Det där är pseudokod. occupied(x,y) är någon funktion som returnerar true om det står någon på positionen x,y. Border not reached är något sätt att kontrollera att du inte har hamnat utanför brädet.

Alright men är inte säker på om vi ska lägga till egna metoder, utan bara fylla i liksom. Men du tror att det krävs att man skapar egna metoder som hanterar det du skrev om occupied och border not reached?
Citera
  • 1
  • 2

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in