Java實驗(15)撲克牌

編程實現程序每次啓動後,在界面上隨機顯示54張撲克牌中的4張,並在其下方顯示花色名(如圖)。

 

撲克牌圖片已打包到cards.jar文件中,命名規則見下圖。


import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
import java.io.*;
import javafx.scene.image.*;
import java.util.jar.*;
import javafx.scene.layout.Pane;
import javafx.geometry.Insets;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Text;

public class MyCard extends Application {
    public static ImageView readImageFromJar(String jarname, String picname) {
        ImageView imageView = null;
        try {
            JarFile jarFile = new JarFile(jarname);
            JarEntry entry = jarFile.getJarEntry(picname);
            InputStream in = jarFile.getInputStream(entry);
            imageView = new ImageView(new Image(in));
            in.close();
            jarFile.close();
        } 
        catch (IOException e) {
            System.err.println("read file error.");
        }
        return imageView;
    }
    @Override
    public void start(Stage primaryStage) {
        int r1=(int)((Math.random()*100)%54);
        int r2=(int)((Math.random()*100)%54);
        int r3=(int)((Math.random()*100)%54);
        int r4=(int)((Math.random()*100)%54);
        GridPane pane=new GridPane();
        pane.setPadding(new Insets(5,5,5,5));
        String card1=new String("cards/"+String.valueOf(r1)+".png");
        String card2=new String("cards/"+String.valueOf(r2)+".png");
        String card3=new String("cards/"+String.valueOf(r3)+".png");
        String card4=new String("cards/"+String.valueOf(r4)+".png");
        ImageView imageView1 = readImageFromJar("cards.jar",card1);
        ImageView imageView2 = readImageFromJar("cards.jar",card2); 
        ImageView imageView3 = readImageFromJar("cards.jar",card3);
        ImageView imageView4 = readImageFromJar("cards.jar",card4);
        String name1="     ", name2="     ", name3="     ", name4="     ";
        name1=getName(name1,r1);
        name2=getName(name2,r2);
        name3=getName(name3,r3);
        name4=getName(name4,r4);
        Text t1=new Text(name1);
        Text t2=new Text(name2);
        Text t3=new Text(name3);
        Text t4=new Text(name4);
        pane.add(imageView1,0,0);
        pane.add(t1,0,1);
        pane.add(imageView2,1,0);
        pane.add(t2,1,1);
        pane.add(imageView3,2,0);
        pane.add(t3,2,1);
        pane.add(imageView4,3,0);
        pane.add(t4,3,1);
        
        Scene scene=new Scene(pane);
        primaryStage.setTitle("第三題");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public String getName(String name,int r){
        if(r>=1 && r<=13)
            name+="黑桃";
        else if(r>=14 && r<=26)
            name+="紅桃";
        else if(r>=27 && r<=39)
            name+="方塊";
        else if(r>=40 && r<=52)
            name+="梅花";
        else if(r==53 || r==54)
            name+="大王";
        if(r!=53 && r!=54){
            if(r==11 || r==24 || r==37 || r==50)
                name+="J";
            else if(r==12 || r==25 || r==38 || r==51)
                name+="Q";
            else if(r==13 || r==26 || r==39 || r==52)
                name+="K";
            else if(r==1 || r==14 || r==27 || r==40)
                name+="A";
            else 
                name+=String.valueOf(r%13);
        }
        return name; 
    }
    public static void main(String[] args) {
        launch(args);
    } 
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章