Vinnaren i pepparkakshustävlingen!
2017-02-21, 12:55
  #6805
Medlem
Citat:
Ursprungligen postat av Lecapitaine
Ok, så du tror det räcker med att skriva en if-sats i klassen Spel som kollar om bollen kolliderar med en spelbricka med en viss position och i sådanafall tas den bort. Du tror inte det är nödvändigt att skriva om klassen Spelplan så brickorna lagras i en array, utan det räcker med att skriva ut brickor med olika positioner genom en for-loop?
Jag har inte kollat på datastrukturerna, men jag tycker att man bör göra det så enkelt som möjligt initialt för att sedan vid behov ändra till något annat. Jag försöker tänka i objekt för att hitta klasser och ansvarsområden. Hur data är lagrat är egentligen underordnat.

Spelplanen känner till alla brickor och ska finnas metoder för att fråga efter var brickorna är.

Mina tankar:
Spel frågar spelplanen om hur många brickor som finns kvar och avgör om spelet ska fortsätta eller inte.
Spel säger till spelplanen att flytta bollen så att den får en ny position. Det gör att bollens position ändras till en ny position utifrån gällande regler vilket kan innebära att den träffar en bricka och ändrar riktning. Då blir det spelplanen som ser till att kolla om en bricka träffas och tar bort den.

Min tanke kan vara fel, men det är nog den approachen jag hade testat.
Citera
2017-02-22, 15:58
  #6806
Medlem
Jag har ett problem som jag inte riktigt vet hur jag ska komma runt.

Jag har en klass, låt oss kalla den Singleton, som ser ut så här:

Kod:
public class Singleton {
    private static volatile Singleton instance = null;
    private static int counter = 1;
    private Singleton(){}

    public static Singleton getInstance(){
        if(instance == null) {
            synchronized (Singleton.class) {
                 if(instance == null) {
                       instance = new Singleton();
                 }
            }
        }
        return instance;
    }
    public static synchronized int getCounter(){
        return counter;
    }
    public static synchronized void incrementCounter(){
        counter++;
    }

När jag sedan skall printa ut värdena på counter, så får jag endast counter = 0 hela tiden.
Jag initierar Singleton så här:
Kod:
Singleton singleton = Singleton.getInstance();
Det jag vill är att jag skall kunna öka värdet på counter genom exekveringen av programmet, samt att counter skall börja från 1, inte 0.

Alla tips mottages tacksamt.
Citera
2017-02-22, 18:13
  #6807
Medlem
Jag sitter med JavaFX FXML igen och jag har fastnat lite. Jag skall skapa två olika scener som jag ska kunna skifta mellan genom att trycka på en knapp i varsin scen. Det har jag lyckats med men problemet jag har nu är att jag skapat två stycken TextFields där jag ska kunna fylla i information. TextFielden skall ta två olika värden och för att skapa dessa i en text file skall jag använda en knapp jag döpt till Continue. Så fort jag trycker på knappen skall den båda byta scen och spara mina två värden från TextFielden i en .txt
Så fort den nya scenen öppnas skall min .txt med informationen jag fyllde i tidigare öppnas upp och visas i en TextArea. Jag hoppas ni förstod vad jag skulle göra men jag greppar inte alls hur jag skall skriva syntaxen för att skapa denna textfilen. Så här långt har jag kommit än så länge. Jag har skapat varsin Controller till mina olika scener. Jag har inte skrivit någon kod i Controller 2 som ska läsa min textfil. Om någon har input på hur jag ska tänka och skriva min kod för att kunna skapa denna textfilen genom vad jag gjort i FXML så är jag mycket tacksam

Controller till första scenen:

Controller till scen 2:


Main:



FXML Scene 1:


FXML Scene 2:

Citera
2017-02-22, 19:10
  #6808
Medlem
Citat:
Ursprungligen postat av deluxNobb
Jag har ett problem som jag inte riktigt vet hur jag ska komma runt.

Jag har en klass, låt oss kalla den Singleton, som ser ut så här:

Kod:
public class Singleton {
    private static volatile Singleton instance = null;
    private static int counter = 1;
    private Singleton(){}

    public static Singleton getInstance(){
        if(instance == null) {
            synchronized (Singleton.class) {
                 if(instance == null) {
                       instance = new Singleton();
                 }
            }
        }
        return instance;
    }
    public static synchronized int getCounter(){
        return counter;
    }
    public static synchronized void incrementCounter(){
        counter++;
    }

När jag sedan skall printa ut värdena på counter, så får jag endast counter = 0 hela tiden.
Jag initierar Singleton så här:
Kod:
Singleton singleton = Singleton.getInstance();
Det jag vill är att jag skall kunna öka värdet på counter genom exekveringen av programmet, samt att counter skall börja från 1, inte 0.

Alla tips mottages tacksamt.
Jag körde ett test av koden och den fungerar alldeles utmärkt:
Kod:
Singleton singleton Singleton.getInstance();
System.out.println(singleton.getCounter());
singleton.incrementCounter();
System.out.println(singleton.getCounter());
singleton.incrementCounter();
System.out.println(singleton.getCounter()); 
Det skriver ut:
1
2
3

Så hur ser din kod ut?

Edit:
Eftersom metoderna och counter är statiska så behöver du inte ens plocka ut en instans av Singleton. Det här fungerar alldeles ypperligt också:
Kod:
System.out.println(Singleton.getCounter());
Singleton.incrementCounter();
System.out.println(Singleton.getCounter());
Singleton.incrementCounter();
System.out.println(Singleton.getCounter()); 
__________________
Senast redigerad av e7andy 2017-02-22 kl. 19:15.
Citera
2017-02-23, 19:12
  #6809
Medlem
kjellbrels avatar
Citat:
Ursprungligen postat av deluxNobb
Det jag vill är att jag skall kunna öka värdet på counter genom exekveringen av programmet, samt att counter skall börja från 1, inte 0.
Hoppas jag tolkar dig rätt nu. Om du vill att din räknare skall kunna behålla sitt värde över flera exekveringar måste du lagra/ladda det från någon form av persistent lagring (ex en fil) mellan exekveringar. Det du har nu är en klass som kommer initiera din räknare till samma startvärde varje gång klassen laddas, dvs varje gång du kör programmet (och drar igång en ny JVM).

Vet ingenting om ditt program i övrigt, men om en enkel lösning duger kan du t ex titta på java.util.Properties för en simpel lösning att kunna spara nyckel/värde-par till fil.

I övrigt så finns det en hel del att påtala om din Singleton-implementation, förutom de kommentarer du redan fått. Att exempelvis använda double checked locking kräver att du läst på ordentligt om riskerna med det först och förstått när och hur det fungerar och när det inte gör det. Vill du veta mer om det kan jag skicka lästips senare. Skippar det för stunden då Singleton inte är vad du behöver för att lösa problemet du frågade om.
Citera
2017-02-26, 18:09
  #6810
Medlem
ozyrecons avatar
Jag är väldigt ny på Java. Är nyfiken på att göra en Byte manipulator i JavaFX men hittar ingen färdig kod man kan titta och lära efter.

Jag tänker att man ska ha 8 bitar som man ska kunna sätta 1 eller 0 och sedan spara detta till en fil som man sedan kan öppna upp i Java igen.
Någon som vet någon bra sida som visar denna koden eller kanske har den själv?
Citera
2017-02-26, 19:22
  #6811
Medlem
Citat:
Ursprungligen postat av ozyrecon
Jag är väldigt ny på Java. Är nyfiken på att göra en Byte manipulator i JavaFX men hittar ingen färdig kod man kan titta och lära efter.

Jag tänker att man ska ha 8 bitar som man ska kunna sätta 1 eller 0 och sedan spara detta till en fil som man sedan kan öppna upp i Java igen.
Någon som vet någon bra sida som visar denna koden eller kanske har den själv?
Jag ser inte vilken nytta någon skulle ha av en sån applikation och därför finns det nog ingen som har skrivit just en sån innan. Däremot har många gjort delar av det du vill göra.
Dela upp problemet i delar.
En del är JavaFX-applikationen (kanske är flera delar här), en del är att skriva till en fil och en del är att läsa från en fil.

Sen tar du varje del för sig och söker efter exempel.

Sök på Google efter: java write byte to file
och: java read byte from file

För JavaFX söker du efter: javafx example
eller: javafx tutorial

Börja med typiskt Hello world-exempel. Sen utvecklar du det till den applikation du vill ha.

Sen pusslar du ihop delarna och så är du klar.
Citera
2017-02-26, 23:37
  #6812
Moderator
Neksnors avatar
Citat:
Ursprungligen postat av ozyrecon
Jag är väldigt ny på Java. Är nyfiken på att göra en Byte manipulator i JavaFX men hittar ingen färdig kod man kan titta och lära efter.

Jag tänker att man ska ha 8 bitar som man ska kunna sätta 1 eller 0 och sedan spara detta till en fil som man sedan kan öppna upp i Java igen.
Någon som vet någon bra sida som visar denna koden eller kanske har den själv?
Det finns ju en javaklass som heter Byte https://docs.oracle.com/javase/7/doc...lang/Byte.html
Skapa en klass som ärver den och lägger till önskad funktionalitet?
Citera
2017-02-27, 00:03
  #6813
Medlem
Citat:
Ursprungligen postat av deluxNobb
Jag har ett problem som jag inte riktigt vet hur jag ska komma runt.

Jag har en klass, låt oss kalla den Singleton, som ser ut så här:

Kod:
public class Singleton {
    private static volatile Singleton instance = null;
    private static int counter = 1;
    private Singleton(){}

    public static Singleton getInstance(){
        if(instance == null) {
            synchronized (Singleton.class) {
                 if(instance == null) {
                       instance = new Singleton();
                 }
            }
        }
        return instance;
    }
    public static synchronized int getCounter(){
        return counter;
    }
    public static synchronized void incrementCounter(){
        counter++;
    }

När jag sedan skall printa ut värdena på counter, så får jag endast counter = 0 hela tiden.
Jag initierar Singleton så här:
Kod:
Singleton singleton = Singleton.getInstance();
Det jag vill är att jag skall kunna öka värdet på counter genom exekveringen av programmet, samt att counter skall börja från 1, inte 0.

Alla tips mottages tacksamt.

skulle ha använt AtomicInteger istället.. och om du nu vill skapa din egen singleton behöver du inte heller göra getInstance så komplicerad, gör bara metoden "syncronized" istället o sen kollar du bara null inne i den
Citera
2017-02-28, 06:42
  #6814
Medlem
Citat:
Ursprungligen postat av ozyrecon
Jag är väldigt ny på Java. Är nyfiken på att göra en Byte manipulator i JavaFX men hittar ingen färdig kod man kan titta och lära efter.

Jag tänker att man ska ha 8 bitar som man ska kunna sätta 1 eller 0 och sedan spara detta till en fil som man sedan kan öppna upp i Java igen.
Någon som vet någon bra sida som visar denna koden eller kanske har den själv?


https://en.wikipedia.org/wiki/Bitwise_operation
Citera
2017-03-01, 19:53
  #6815
Medlem
Jag har fått lite hjärnsläpp. Jag använder JavaFX och har gjort ett enkelt bankaccount. När jag gör en deposit vill jag att den nya insättningen skall läggas på min balance. Som det är nu så kan jag ha 3000 på kontot men när jag vill sätta in låt säga 500 kronor så blir det inte 3500 utan balansen blir 500.


Citera
2017-03-01, 21:23
  #6816
Medlem
Citat:
Ursprungligen postat av Rytve
Jag har fått lite hjärnsläpp. Jag använder JavaFX och har gjort ett enkelt bankaccount. När jag gör en deposit vill jag att den nya insättningen skall läggas på min balance. Som det är nu så kan jag ha 3000 på kontot men när jag vill sätta in låt säga 500 kronor så blir det inte 3500 utan balansen blir 500.


Eftersom du inte läser in beloppet och adderar det nya utan bara skriver ut ett nytt belopp så blir det bara det senaste beloppet i filen.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback