2016-04-08 12 views
0

Bir Crazy Eights oyunu yazıyorum ve fare kontrolünün eklenmesine çalışıyorum. Yazmaya başlıyorum ama çalışıp çalışmadığını doğrulayamıyorum. Basılı ve yayınlanmış etkinlik çağrılarına System.out.println() öğesini ekledim, ancak hiçbir çıkış gerçekleşmedi. Sadece çalışmayı ve hata ayıklama için bir çeşit çıktı görebilmem gerekiyor. Ayrıca bana yardım etmek için stackoverflow üzerinde başka bir örnek kullanmaya çalıştım ama hala sorun yaşıyorum. Aşağıdaki kod çalışıyorum. Başka bir derse ihtiyacın olursa haberim olsun. TeşekkürAyrı Sınıftaki Fare İşleyici Çalışmıyor

MouseControl.java

package crazyeightscountdown.CoreClasses; 

import java.awt.Canvas; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 


public class MouseControl extends MouseAdapter { 

    public Canvas canvas; 

    public MouseControl (Canvas c){ 
     this.canvas = c; 
    } 

@Override 
public void mouseReleased (MouseEvent e){ 
    System.out.println("Mouse Released.\n"); 
} 

@Override 
public void mousePressed (MouseEvent e){ 
    System.out.println("Mouse Pressed.\n"); 
} 

@Override 
public void mouseClicked (MouseEvent e){ 

} 

@Override 
public void mouseEntered (MouseEvent e){ 

} 

@Override 
public void mouseExited (MouseEvent e){ 

} 

}//class 

Game.java

package crazyeightscountdown; 

import static com.sun.java.accessibility.util.AWTEventMonitor.addMouseListener; 
import static crazyeightscountdown.CoreClasses.Constants.CARDPICX; 
import crazyeightscountdown.CoreClasses.Deck; 
import crazyeightscountdown.CoreClasses.MouseControl; 
import crazyeightscountdown.CoreClasses.Player; 
import java.awt.Graphics; 
import java.awt.image.BufferStrategy; 

//Sets up parameters for the game window 
public class Game implements Runnable { 

    private Display display; 

    public int width, height; 

    public Game(String title, int width, int height) { 
     this.width = width; 
     this.height = height; 

     display = new Display(title, width, height); 
     StartGame(); 
    } 

//create the game decks 
//Deck maindeck = new Deck(); 
    public Deck faceupdeck = new Deck(); 
    public Deck facedowndeck = new Deck(); 
    Deck tempdeck = new Deck(); 
    public int deckindex = 0; 

    public Player playerone = new Player(); 
    public Player playertwo = new Player(); 

    private BufferStrategy bs; 
    private Graphics g; 

    private boolean running = false; 
    private Thread thread; 

    public void StartGame() { 

     //setup mouse 
     addMouseListener (new MouseControl(display.getCanvas())); 

     //set players 
     playerone.SetPlayer(1); 
     playertwo.SetPlayer(2); 
     //set values to main deck 
     facedowndeck = facedowndeck.SetDeck(facedowndeck); 

     //shuffle the deck 
     facedowndeck = facedowndeck.ShuffleDeck(facedowndeck); 

     //hand out first deal 
     FirstDeal(); 
    } 

    public void FirstDeal() { 
     int playerindex = 1; 
     deckindex = 1; 

     //deal each player 8 cards to start 
     for (int h = 0; h < 8; h++) { 
      playerone.hand.card[playerindex] = facedowndeck.card[deckindex]; 
      facedowndeck.card[deckindex].present = false; 
      playerone.hand.card[playerindex].present = true; 
      deckindex++; 
      playertwo.hand.card[playerindex] = facedowndeck.card[deckindex]; 
      facedowndeck.card[deckindex].present = false; 
      playerone.hand.card[playerindex].present = true; 
      deckindex++; 
      playerindex++; 

      //facedowndeck.Truncate(facedowndeck); 
     } 

     //put card face up 
     faceupdeck.card[1] = facedowndeck.card[deckindex]; 
     deckindex++; 
    } 

    private void render() { 
     bs = display.getCanvas().getBufferStrategy(); 
     if (bs == null) { 
      display.getCanvas().createBufferStrategy(3); 
      return; 
     } 
     g = bs.getDrawGraphics(); 
     //Clear Screen 
     g.clearRect(0, 0, width, height); 

    /******* START DRAWING HERE **********/ 
     //draw player1 deck 
     for (int f = 1; f < 9; f++) { 
      g.drawImage(playerone.hand.card[f].pic, (CARDPICX * (f - 1)) + (f * 5), 5, null); 
      g.drawImage(playertwo.hand.card[f].pic, (CARDPICX * (f - 1)) + (f * 5), 450, null);   
     } 

     g.drawImage(faceupdeck.card[1].pic,400, 200, null); 

    /*********** END DRAWING HERE ***********/ 
     bs.show(); 
     g.dispose(); 
    } 

    private void tick() { 

    } 

    public void run() { 

     //init(); 
     while (running) { 
      tick(); 
      render(); 
     } 

     stop(); 

    } 

    public synchronized void start() { 
     if (running) { 
      return; 
     } 
     running = true; 
     thread = new Thread(this); 
     thread.start(); 
    } 

    public synchronized void stop() { 
     if (!running) { 
      return; 
     } 
     running = false; 
     try { 
      thread.join(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
}//class 

Display.java

package crazyeightscountdown; 


import java.awt.Canvas; 
import java.awt.Dimension; 

import javax.swing.JFrame; 

//display parameters for the window 
public class Display { 

    public JFrame frame; 
    public Canvas canvas; 

    public String title; 
    public int width, height; 

    public Display(String title, int width, int height){ 
     this.title = title; 
     this.width = width; 
     this.height = height; 

     createDisplay(); 
    } 

    private void createDisplay(){ 
     frame = new JFrame(title); 
     frame.setSize(width, height); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setResizable(false); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 

     canvas = new Canvas(); 
     canvas.setPreferredSize(new Dimension(width, height)); 
     canvas.setMaximumSize(new Dimension(width, height)); 
     canvas.setMinimumSize(new Dimension(width, height)); 

     frame.add(canvas); 
     frame.pack(); 
    } 

     public Canvas getCanvas(){ 
     return canvas; 
    } 

} 
+0

Kodlarınızın derlenebileceğinden emin misiniz? 'addMouseListener (yeni MouseControl (display.getCanvas()));' Game sınıfı bir JComponent olmadığı için tuhaf görünüyor, 'addMouseListener()' işlevini geçersiz kılmasını nasıl beklersiniz? – user3437460

cevap

0

Bir bileşene MouseListener eklemek zorunda: frame.addMouseListener(...)

+0

Kodumu şununla değiştirdim: display.frame.addMouseListener (yeni MouseControl (display.canvas)); hala çıkışsız – Sashiose

İlgili konular