java中的逻辑问题 [英] trouble with logic in java

查看:26
本文介绍了java中的逻辑问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图让这个程序显示两张图片并检查它们是否是同一张图片,我无法让 bildeSjekk() 执行此操作,它显示所有图片,如果您双击图片,它会将其删除,首先我需要存储 int i 的前一个实例,然后当出纳员应该在两张图片被显示时变成两个时,然后我将在 int 数组索引中使用当前的 int i 和 int temp 并检查值是否相同.这是一个图片记忆游戏.

I am trying to get this program to show two pictures and check if they are the same picture, i am having trouble getting bildeSjekk() to do this, it shows all pictures and if you double click a picture it removes it, first i need to store the previous instance of the int i, then when teller should become two when two pictures have been revealed, and then i will use current int i and int temp in the int array index and check if the value is the same. It's a Picture memory game.

package prosjekt_1139;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.IOException;
import java.net.URL;


import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class Hukommelse extends JPanel implements MouseListener, ActionListener{

//private JLabel[] kort = new JLabel[16];
private JButton nyOmgang = new JButton("Del ut kortene");
private JButton tilbake = new JButton("Tilbake");
private HovedVinduet vindu;
private int[] index = new int[16];
private int teller =0, temp = 0;
private Image img;
private Image[] imgarray;
private Rectangle[] bokser;
private Point point1;
private URL path1, path2[]= new URL[8];
private boolean sjekk[] = new boolean[16];

public Hukommelse(HovedVinduet vindu) throws IOException{
    this.vindu = vindu;

    bokser = new Rectangle[16];
    imgarray = new Image[8];
    point1 = new Point();

    img = null; 
    setBackground(Color.GREEN);
    setPreferredSize(new Dimension(720,690));
    setLocation(0,0);
    nyOmgang.addActionListener(this);
    tilbake.addActionListener(this);
    add(nyOmgang);
    add(tilbake);
    this.addMouseListener(this);
    boks();
}

//  this is my randomisere metode
public void  kortIndex(){
    int temp;

    for (int i = 0;i<index.length;i++){
        index[i] = i/2;
        //System.out.println(index[i]);
    }

    for (int i=0;i<1000;i++){
        int index1 = (int)(Math.random()*16);
        int index2 = (int)(Math.random()*16);
        temp = index[index1];
        index[index1] = index[index2];
        index[index2] = temp;
    }
    //      for (int i = 0; i<index.length;i++)
    //          System.out.print(index[i]+"\t");
    //      System.out.println();
}

public void paintComponent(Graphics g){
    super.paintComponents(g);
    g.setColor(Color.green);

    int j = 0;
    int k = 0;
    for (int i = 0; i<16;i++){
        g.drawImage(img, 20+(k*175), 50+(j*160), 150, 150, this);
        k++;
        if(i == 3 || i == 7 || i == 11 || i == 15){
            j++;
            k = 0;
        }
    }

    for (int i=0; i<bokser.length; i++) {
        if(sjekk[i]){
            g.drawImage(imgarray[index[i]], bokser[i].x, bokser[i].y, bokser[i].width, bokser[i].height, this);
        }
    }
}

//Metode For checking if the image is clicked on
public void bildeSjekk(){

    for (int i = 0;i<bokser.length;i++){
        if(bokser[i].contains(point1)){
            sjekk[i] = true;
            teller++;
            temp = i;
        }
        if(teller >= 2 ){
            sjekk[i] = false;
            sjekk[temp] = false;
            teller = 0;
        }
    }
}

public void boks(){
    int j = 0;
    int k = 0;
    for(int i = 0; i <bokser.length; i++){
        bokser[i] = new Rectangle(20+(j*175), 50+(k*160), 150, 150);
        j++;
        if(i == 3 || i == 7 || i == 11 || i == 15){
            j =0;
            k++;
        }
    }
}

public void bilder() throws IOException{
    img = ImageIO.read(new File("Image/grass.jpg"));

    //repaint();

    imgarray[0] = ImageIO.read(new File("Image/bekk.jpg")); 
    imgarray[1] = ImageIO.read(new File("Image/solnedgang.jpg"));
    imgarray[2] = ImageIO.read(new File("Image/tåge.jpg"));
    imgarray[3] = ImageIO.read(new File("Image/vile.jpg"));
    imgarray[4] = ImageIO.read(new File("Image/fuglekasse.jpg"));
    imgarray[5] = ImageIO.read(new File("Image/gullfugl.jpg"));
    imgarray[6] = ImageIO.read(new File("Image/byen.jpg"));
    imgarray[7] = ImageIO.read(new File("Image/bekk.jpg"));
}


@Override
public void mouseClicked(MouseEvent agr0) {
    // TODO Auto-generated method stub
}

@Override
public void mouseEntered(MouseEvent arg0) {
    // TODO Auto-generated method stub
}

@Override
public void mouseExited(MouseEvent arg0) {
    // TODO Auto-generated method stub
}

@Override
public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub
    System.out.println(e.getX()+"\t"+e.getY());
    point1 = e.getPoint();

    bildeSjekk();
    repaint();
}

@Override
public void mouseReleased(MouseEvent arg0) {
    // TODO Auto-generated method stub
}

@Override
public void actionPerformed(ActionEvent e) {
    if(e.getActionCommand().equals("Del ut kortene")){  
        try {
            bilder();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        point1 = new Point(0,0);
        for (int i = 0;i<bokser.length;i++){
            sjekk[i] = false;
        }
        teller = 0;
        kortIndex();
        repaint();
    }
    if(e.getSource() == tilbake){
        vindu.setMenyPanelAktivt();
        vindu.setSize(800, 600);
        vindu.setLocation(0,0);
    }
}
}

推荐答案

您可能会喜欢这个相关的 使用 JToggleBUttonUnicode 字形代替的记忆游戏图片.

You might like this related memory game that uses JToggleBUtton and Unicode glyphs instead of pictures.

附录:顺便说一句,如果您准备一个不依赖于的 sscce大量无法访问的图像.例如,RotatableImage 是一个简单的静态类,可以根据需要进行调整.

Addendum: As an aside, you may get more helpful answers if you prepare an sscce that doesn't depend on a large number of inaccessible images. As an example, RotatableImage is a simple, static class that can be adapted as required.

这篇关于java中的逻辑问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆