zoukankan      html  css  js  c++  java
  • 源代码不是直接翻译成机器语言

    相对于编译型语言存在的,源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。比如Python/JavaScript / Perl /Shell等都是解释型语言。

    解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执 行一次都要翻译一次。因此效率比较低。比如Basic语言,专门有一个解释器能够直接执行Basic程 序,每个语句都是执行的时候才翻译。

     

      1 package Com.Table;
      2 
      3 import java.util.*;
      4 
      5 class Card{
      6     private String color;
      7     private String number;
      8  
      9     public Card(String color, String number) {
     10         this.color = color;
     11         this.number = number;
     12     }
     13  
     14     public String getColor() {
     15         return color;
     16     }
     17  
     18     public String getNumber() {
     19         return number;
     20     }
     21  
     22     @Override
     23     public boolean equals(Object obj) {
     24         if (this == obj)
     25             return true;
     26         if (obj == null)
     27             return false;
     28         if (!(obj instanceof Card))
     29             return false;
     30         Card other = (Card) obj;
     31         if (color == null) {
     32             if (other.color != null)
     33                 return false;
     34         } else if (!color.equals(other.color))
     35             return false;
     36         if (number == null) {
     37             if (other.number != null)
     38                 return false;
     39         } else if (!number.equals(other.number))
     40             return false;
     41         return true;
     42     }
     43  
     44 }
     45  
     46 class Cards {
     47     private List<Card> list = new ArrayList<Card>();
     48     //创建一副扑克牌
     49     public Cards(){
     50         System.out.println("-----------------创建扑克牌------------------");
     51         String[] color = {"黑桃", "红桃", "梅花", "方片"};
     52         String[] number = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J","Q","K", "A"};
     53         for(int i=0;i<color.length;i++)
     54             for(int j=0;j<number.length;j++){
     55                 list.add(new Card(color[i], number[j]));
     56             }
     57         System.out.println("----------------扑克牌创建成功!---------------");
     58     }
     59  
     60     //获取一副扑克牌
     61     public List<Card> getList() {
     62         return list;
     63     }
     64  
     65     //洗牌(打乱)
     66     public void shufCards(){
     67         System.out.println("----------------开始洗牌------------------------");
     68         Collections.shuffle(list);
     69         System.out.println("----------------洗牌结束------------------------");
     70     }
     71  
     72     //展示一副扑克牌
     73     public void showCards(){
     74         System.out.print("当前的扑克牌为:");
     75         System.out.print("[ ");
     76         for(int i=0;i<list.size();i++){
     77             System.out.print(list.get(i).getColor() + list.get(i).getNumber()+ " ");
     78         }
     79         System.out.println(" ]");
     80     }
     81  
     82 }
     83  
     84 class Player {
     85     private int id;
     86     private String name;
     87     private List<Card> handCards = new ArrayList<Card>();
     88  
     89     public Player(int id, String name){
     90         this.id = id;
     91         this.name = name;
     92     }
     93  
     94     public List<Card> getHandCards() {
     95         return handCards;
     96     }
     97  
     98     public void setHandCards(Card card) {
     99         handCards.add(card);
    100     }
    101  
    102     public int getId() {
    103         return id;
    104     }
    105  
    106     public void setId(int id) {
    107         this.id = id;
    108     }
    109  
    110     public String getName() {
    111         return name;
    112     }
    113  
    114     public void setName(String name) {
    115         this.name = name;
    116     }
    117  
    118 }
    119  
    120 class CardComparator implements Comparator<Card> {
    121  
    122     @Override
    123     public int compare(Card c1, Card c2) {
    124         // 构建花色和牌值数组,通过比对,计算得到某张牌的价值(大小)
    125         String[] color = {"方片", "梅花", "红桃", "黑桃"};
    126         String[] number = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J","Q","K", "A"};
    127  
    128         //由于比较规则是先比较牌值,如果相等再比较花色(黑红梅方),所以将牌值赋予较高的权值
    129         int valueOfC1 = 0;
    130         int valueOfC2 = 0;
    131         for(int i=0;i<number.length;i++){
    132             if(c1.getNumber().equals(number[i])) valueOfC1 += i*10;
    133             if(c2.getNumber().equals(number[i])) valueOfC2 += i*10;
    134         }
    135         for(int i=0;i<color.length;i++){
    136             if(c1.getColor().equals(color[i])) valueOfC1 += i;
    137             if(c2.getColor().equals(color[i])) valueOfC2 += i;
    138         }
    139  
    140         if( valueOfC1 > valueOfC2 ) return -1;
    141         if( valueOfC1 < valueOfC2 ) return 1;
    142  
    143         return 0;
    144     }
    145  
    146 }
    147 public class NinteenTable {
    148     //创建玩家
    149     //要对玩家ID的异常处理,要求用户只能输入整数ID,否则需要重新输入
    150     public Player setPlayer(){
    151         int id=0;
    152         String name="";
    153         Scanner console = new Scanner(System.in);
    154         boolean ready = true;
    155         do{
    156             try{
    157                 System.out.println("输入ID:");
    158                 id = console.nextInt();
    159                 ready = true;
    160             }catch(Exception e){
    161                 System.out.println("请输入整数类型的ID!");
    162                 ready = false;
    163                 console.nextLine();
    164             }
    165         }while(ready==false);
    166  
    167         System.out.println("输入姓名:");
    168         name = console.next();
    169         return new Player(id, name);
    170     }
    171  
    172     public static void main(String[] args) {
    173         //测试简易扑克牌程序
    174         NinteenTable game = new NinteenTable();
    175         //(1)创建一副牌
    176         Cards cards = new Cards();
    177         //(2)展示新的扑克牌
    178         cards.showCards();
    179         //(3)洗牌
    180         cards.shufCards();
    181         //(4)创建玩家
    182         System.out.println("--------------创建两个(or多个)玩家就可以开始游戏啦!-------------");
    183         List<Player> p = new ArrayList<Player>();
    184         for(int i=0;i<2;i++)
    185         {
    186             System.out.println("请输入第"+(i+1)+"位玩家的ID和姓名:");
    187             p.add(game.setPlayer());
    188         }
    189         for(int i=0;i<p.size();i++)
    190         {
    191             System.out.println("欢迎玩家:"+p.get(i).getName());
    192         }
    193         //(5)扑克牌比大小游戏开始啦~
    194         int count = 0;
    195         System.out.println("------------------开始发牌---------------------");
    196         //设定每人分别拿两张(or多张)
    197         for(int i=0; i<2;i++){
    198             //玩家轮流拿牌
    199             for(int j=0; j< p.size(); j++){
    200                 System.out.println(">玩家"+p.get(j).getName()+"拿牌");
    201                 p.get(j).setHandCards(cards.getList().get(count));
    202                 count++;
    203             }
    204         }
    205         System.out.println("------------------发牌结束!--------------------");
    206         System.out.println("------------------开始游戏 ---------------------");
    207         for(int i=0;i<p.size();i++){
    208             System.out.print("玩家"+p.get(i).getName()+"的手牌为:[ ");
    209             for(int j=0;j<p.get(i).getHandCards().size();j++){
    210                 Card cur = p.get(i).getHandCards().get(j);
    211                 System.out.print(cur.getColor()+cur.getNumber()+" ");
    212             }
    213             System.out.println(" ]");
    214         }
    215  
    216         //排序得到每个玩家最大的手牌(排序规则自定义)
    217         for(int i=0;i<p.size();i++){
    218             Collections.sort(p.get(i).getHandCards(), new CardComparator());
    219         }
    220         List<Card> maxCard = new ArrayList<Card>();
    221         for(int i=0;i<p.size();i++){
    222             Card maxCur = p.get(i).getHandCards().get(0);
    223             System.out.println("玩家"+p.get(i).getName()+"最大的手牌为:"+ maxCur.getColor()+maxCur.getNumber());
    224             maxCard.add(maxCur);
    225         }
    226  
    227         //得到最后的胜者
    228         List<Card> temp = new ArrayList<Card>();
    229         temp.addAll(maxCard);
    230         Collections.sort(temp, new CardComparator());
    231         for(int i=0;i<p.size();i++){
    232             if(maxCard.get(i).equals(temp.get(0))) System.out.println("恭喜玩家:"+p.get(i).getName()+"获胜!");
    233         }
    234     }
    235 }
  • 相关阅读:
    优化linux,安装node环境
    腾讯云主机的公网无法访问,putty和FileZilla连接不上
    angularjs1.x的directive中的link参数element见解
    springboot自动装配原理
    redis哨兵部署
    HashMap笔记
    多线程与高并发
    java面试必会知识点
    maven仓库
    java任务调度简单示例
  • 原文地址:https://www.cnblogs.com/borter/p/9385167.html
Copyright © 2011-2022 走看看