sinnlos >>> "]" expected

  • Themenstarter Themenstarter Gast Sav
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast Sav

Gast
immer wen ich auf compilieren drücke sagt mir BlueJ das in der Zeile
" Image feld[f] =Toolkit.getDefaultToolkit().getImage (karte [k]);" ein "]" fehlt, aber meines wissen muss da keins hin, bitte ....nein ....bettle um schnelle hilfe da dies mein projekt für die schule ist ( Black Jack Spiel als applikation >>soll funktionieren) und am 19.04.07 abgabetermin ist.....bittteeeeeee







Code:
import java.awt.*;
import java.io.*;
import javax.swing.*;
import java.util.*;
import java.lang.String;


public class Blackjack extends JFrame
{
   // Hauptfunktion
   public static void main(String[] args)
   {
      // Starten des Konstruktors der Klasse, Erzeugung eines neuen Objektes bj
      Blackjack bj = new Blackjack();
      bj.setLocation(10,10);
      // Objekt bj sichtbar machen
      bj.setVisible(true);
   }

   // Konstruktor
   public Blackjack()
   {
      // Frame Standard-Funktionen
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setSize(600,800);
      // Layout setzen und Komponenten hinzufügen
      setLayout(null);
      // Label
      Font fo1 = new Font("Serif", Font.BOLD, 26);
      // Zuweisung des Fonts
      Label labueberschrift = new Label("Java BlACk jAcK");
      labueberschrift.setBounds(10,30,380,30);
      add(labueberschrift);
      labueberschrift.setFont(fo1);
      Button halten =new Button("Halten");
      Button ziehen =new Button("Ziehen");
      Button neu    =new Button("Neues Spiel");
      halten.setBounds    (10,10,10,10);  // PROBE ACHTUNG ÄNDERN <<feld war zu groß>>
      ziehen.setBounds  (20,20,20,20);
      neu.setBounds     (30,30,30,30);
      add(halten);
      add(ziehen);
      add(neu);
           
             
   }
   public void paint(Graphics g)
   {
       int k,f,kx = 50,ky = 50;
       Random zufall=new Random(System.currentTimeMillis());
      
       k=zufall.nextInt(52+1);
       f=zufall.nextInt(4+1);
       
       String[] feld = {"gif1","gif3","gif4","gif5"};
       String[] karte = {"2_1.gif","2_2.gif","2_3.gif","2_4.gif",
          "3_1.gif","3_2.gif","3_3.gif","3_4.gif",
          "4_1.gif","4_2.gif","4_3.gif","4_4.gif",
          "5_1.gif","5_2.gif","5_3.gif","5_4.gif",
          "6_1.gif","6_2.gif","6_3.gif","6_4.gif",
          "7_1.gif","7_2.gif","7_3.gif","7_4.gif",
          "8_1.gif","8_2.gif","8_3.gif","8_4.gif",
          "9_1.gif","9_2.gif","9_3.gif","9_4.gif",
          "10_1.gif","10_2.gif","10_3.gif","10_4.gif",
          "B1.gif","B2.gif","B3.gif","B4.gif",
          "Q1.gif","Q2.gif","Q3.gif","Q4.gif",
          "K1.gif","K2.gif","K3.gif","K4.gif",
          "As1.gif","As2.gif","As3.gif","As4.gif"};
      Image feld[f] =Toolkit.getDefaultToolkit().getImage (karte [k]);
      
      g.drawImage(feld[f],kx,ky,this);
   }
}
:applaus: :applaus: :applaus:
 
Code:
Image feld[f] =Toolkit.getDefaultToolkit().getImage (karte [k]);

Das geht doch gar nicht: getImage(...) liefert doch nur ein Image
zurück und kein Array:

Code:
Image image =Toolkit.getDefaultToolkit().getImage (karte [k]);
 
Sorry aber ich n00b ..mega atom super n00b was java angeht bin für jede verbesserung oder änderung offen ...wie würdest du denn das machen ...ich habe 52 gif bilder die meine karten darstellen und ich will erreichen das diese per random rausgepickt und angezeigt werden ... (wie ich den gifs werte zuweise so das ich nachher mit einem label die punkte ausgeben kann weiss ich noch nicht soweit kam ich ja nicht.... thx für alle die mir verushen zu helfen
 
allgemeiner Tipp:
mache nichts unnötig oft und schon gar nich in so einer zeitkritischen Operation wie paint,

das Array karte ist relativ aufwendig zu erstellen und ändert sich nie
-> nur einmal als Exemplarvariable in der Klasse speichern

auch könntest du die 52 Bilder vorher laden oder zumindest in einer Operation kurz vor dem paint-Aufruf,
(nagut, das wird dann langsam zu aufwendig, nix für Anfänger)
----

ansonsten besteht momentan keine Frage von dir?

> thx für alle die mir verushen zu helfen
wird nicht viel Reaktion hervorrufen, mein obiger Text auch nur ein Alibi,

wollte 'du hast keine Frage mehr?' nicht nur für sich alleine posten 😉
 
Wenn du dabei statt
Code:
Image img = Toolkit.getDefaultToolkit().getImage(karte[k]);
Code:
Image img = new javax.swing.ImageIcon(getClass().getResource(karte[k])).getImage();
verwendest, werden die Bilder direkt geladen, und nicht erst, wenn du das erste mal paint() aufrufst.
 
Welche der beiden Varianten er verwendet ist völlig Wurst.
Aber keine der beiden sollte in der paint()-Methode stehen.

Bilder werden im Konstruktor geladen.
 
Aber wie soll ich das bild dann darstellen ich kann dann keinen g.drawImage (img,x,y,this) anwenden weil der dann img nicht mehr kennt....

Diese Variante ist mir persönlich auch lieber aber ich weiss nicht wie ich dann die verbindung mit paint hin bekomme bzw. wie ich das bild darstelle irgendwo muss ich ja schließlich die koordinaten angeben oder nicht??
 
was hat das Laden der Bilder mit den Koordinaten zu tun?

und wenn du die Bilder im Konstruktor lädst, dann natürlich so,
dass du in paint darauf zugreifen kannst,
z.B. in einem Array als Exemplarvariable gespeichert,

wenn dir 'Exemplarvariable' nichts sagt,
dann wird das ohne weiteres Grundlagen-Lernen zunächst noch nichts
 
Ich habe den Quelltext nun etwas verändert einiges Funktioniert aber nun habe ich das Problem, dass mein button "ziehen" nicht funktioniert...Ich will das j dekrementiert wird und dann nochmal die paint durchlaufen wird damit die nächste karte ausgegeben wir.....

Code:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import java.util.*;
import java.lang.String;

//////////////////////////////////////////////////////////////////////////////////
//////////////////////Java Black Jack Applikation/////////////////////////////////
////////////////////////XXXXXXXXXXXXXXXXXXXXXXX///////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////


public class Blackjack extends Frame
{
   Random zufall=new Random();
   // Hier werden die  int Variablen deklariert. In a,b,c,d,e,f,h,j sind Zufallszahlen generiert mit Hilfe der Klasse Random      
   int j=5,kx=200,ky=200,punktestand=0,i=1,points,   
      a=zufall.nextInt(52),
      b=zufall.nextInt(52),
      c=zufall.nextInt(52),
      d=zufall.nextInt(52),
      e=zufall.nextInt(52),
      f=zufall.nextInt(52),
      h=zufall.nextInt(52),
      k=zufall.nextInt(52);
            
    String[] karte = {"2_1.gif","2_2.gif","2_3.gif","2_4.gif",
                      "3_1.gif","3_2.gif","3_3.gif","3_4.gif",
                      "4_1.gif","4_2.gif","4_3.gif","4_4.gif",
                      "5_1.gif","5_2.gif","5_3.gif","5_4.gif",
                      "6_1.gif","6_2.gif","6_3.gif","6_4.gif",
                      "7_1.gif","7_2.gif","7_3.gif","7_4.gif",
                      "8_1.gif","8_2.gif","8_3.gif","8_4.gif",
                      "9_1.gif","9_2.gif","9_3.gif","9_4.gif",
                      "10_1.gif","10_2.gif","10_3.gif","10_4.gif",
                      "B1.gif","B2.gif","B3.gif","B4.gif",
                      "Q1.gif","Q2.gif","Q3.gif","Q4.gif",
                      "K1.gif","K2.gif","K3.gif","K4.gif",
                      "As1.gif","As2.gif","As3.gif","As4.gif"};
     int[] kartenpunkte = {2,2,2,2,3,3,3,3,4,4,4,4,
                           5,5,5,5,6,6,6,6,7,7,7,7,
                           8,8,8,8,9,9,9,9,10,10,10,10,
                           10,10,10,10,10,10,10,10,
                           10,10,10,10,10,10,10,10};
    
     TextField punkteBank = new TextField (10);
     TextField punkteSpieler = new TextField (10); 
   
     // Hauptfunktion
     public static void main(String[] args)
     {
        // Starten des Konstruktors der Klasse, Erzeugung eines neuen Objektes bj
        Blackjack bj = new Blackjack();
        bj.setLocation(10,10);
        // Objekt bj sichtbar machen
        bj.setVisible(true);
     }

     // Konstruktor
     public Blackjack()
     {  
        // Frame Standard-Funktionen
        setSize(800,600);
        // Layout setzen und Komponenten hinzufügen
        setLayout(null);
        // Label
        Font font1 = new Font("Arial", Font.BOLD, 26);
        // Zuweisung des Fonts
        Label labueberschrift = new Label("Java Black Jack");
        // Erzeugen Bounden und Adden der Buttons 
        labueberschrift.setBounds(200,30,500,30);
        Button halten =new Button("Halten");                        
        Button ziehen =new Button("Ziehen");                        
        Button neu    =new Button("Neues Spiel");
        //Erzeugen der Radiobuttons für die Auswahl ob Ass als Eins oder als 11 gezählt wird.
        JRadioButton ass1 =new  JRadioButton("Ass als 1 Werten" , true),
                     ass10 =new JRadioButton("Ass als 10 Werten" , false);  
        //Zuweisen des Fonts
        labueberschrift.setFont(font1);
        punkteBank.setFont(font1);
        punkteSpieler.setFont(font1);
        halten.setFont(font1);
        ziehen.setFont(font1);
        neu.setFont(font1);
        ass1.setFont(font1);
        ass10.setFont(font1);
        punkteBank.setEditable(false);
        punkteSpieler.setEditable(false);
        //Bounden der Elemente
        halten.setBounds  (133,400,100,80);
        ziehen.setBounds  (366,400,100,80);
        neu.setBounds     (599,400,100,80);
        punkteBank.setBounds(133,300,70,50);
        punkteSpieler.setBounds(133,350,70,50);
        ass1.setBounds(400,300,50,50);
        ass10.setBounds(400,360,50,50);
        //Adden der Elemente
        add(labueberschrift);
        add(halten);
        add(ziehen);
        add(neu);
        add(punkteSpieler);
        add(punkteBank);
        add(ass1);
        add(ass10);
        //Zuordnung der Inneren Klassen
        //Buttongroup festlegen
        ButtonGroup ass = new ButtonGroup();
        ass.add(ass1); 
        ass.add(ass10);
     }
   
     //Hier werden die Karten dargestellt
     public void paint(Graphics g)
     {
        System.out.println("paint aufgerufen!! ******************");
        //Hintergrundfarbe wird auf grün gesetzt
        //g.setBackground(Color.green);
        //Karten werden geladen
        System.out.println("a = "+a);
        System.out.println("b = "+b);
        System.out.println("c = "+c);
        System.out.println("d = "+d);
        System.out.println("e = "+e);
        System.out.println("f = "+f);
        System.out.println("h = "+h);
        System.out.println("k = "+k);
        
        Image s_1 = new javax.swing.ImageIcon(getClass().getResource(karte[a])).getImage();
        Image s_2 = new javax.swing.ImageIcon(getClass().getResource(karte[b])).getImage();
        Image s_3 = new javax.swing.ImageIcon(getClass().getResource(karte[c])).getImage();
        Image s_4 = new javax.swing.ImageIcon(getClass().getResource(karte[d])).getImage();
        Image b_1 = new javax.swing.ImageIcon(getClass().getResource(karte[e])).getImage();  
        Image b_2 = new javax.swing.ImageIcon(getClass().getResource(karte[f])).getImage();  
        Image b_3 = new javax.swing.ImageIcon(getClass().getResource(karte[h])).getImage();
        Image b_4 = new javax.swing.ImageIcon(getClass().getResource(karte[k])).getImage();
        //Karten werden Ausgegeben
      if(j==5)
      {
        g.drawImage(s_1,kx,ky,this);kx=kx+100;
        g.drawImage(s_2,kx,ky,this);kx=kx+100;
        points=0+kartenpunkte[a]+kartenpunkte[b];
        punkteSpieler.setText(""+points);
      }
      else
      {  
        if(j==4)  
        { points=points+kartenpunkte[c];
        g.drawImage(s_3,kx,ky,this);kx=kx+100;
        punkteSpieler.setText(""+points);
      
      
        }
          else{  
           if(j==3)
           {  
           points=points+kartenpunkte[d];
           g.drawImage(s_4,kx,ky,this);kx=kx-300;ky=ky+100;
           punkteSpieler.setText(""+points);
           }
             else
             {
              if(j==2)  
              { 
              g.drawImage(b_1,kx,ky,this);kx=kx+100;
              punkteBank.setText(""+points);
              g.drawImage(b_2,kx,ky,this);kx=kx+100;

              }
               else
               {
               g.clearRect(800,600,800,600); 
               }
             }
           }
        }
      }

   // Dieser Button Beenden den Zug des Spielers und 
   //offenbart die Karten der Bank und die Punkte der Bank
   class halten implements ActionListener
   {
      public void actionPerformed(ActionEvent e)
      {
   	   
   	   
   	    punkteBank.setText("OK");
   	    
   	    
   	   
      }
   }

   class bAss implements ActionListener
   {
      public void actionPerformed(ActionEvent e)
      {
         
       }
   }
   class ziehen implements ActionListener
   {
      public void actionPerformed(ActionEvent e)
      {
       j--;  
       //     hier will ich ein repaint einbauen aber ich weiss nicht wie ich den 
       //     befehl formulieren muss ich dachte der wäre                 
      //     nur repaint (); aber das klappt irgenwie nicht....  
       }
   }
}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben