标签:斯坦福大学公开课 编程方法学 java语言的科学与艺术
欢迎大家转载,为保留作者成果,转载请注明出处,http://blog.csdn.net/netluoriver,有些文件在资源中也可以下载!如果你没有积分,可以联系我索要!
1、
package SixthCharter; /* * File: Poker.java * --------------------------- * 这是第6章的第一题 * Author luoriver */ import acm.program.*; import acm.util.*; public class Poker extends ConsoleProgram { public void run(){ println("这个程序是随机显示选择的扑克"); while(true){ println(); int i = readInt(); showPoker(); if (i==2) break; } } /* * 显示随机的扑克牌 */ private void showPoker(){ int num = rgen.nextInt(1,13); // rgen.setSeed(2); switch(num){ case 1: print("Ace"); break; case 11: print("Jack"); break; case 12: print("Queen"); break; case 13: print("King"); break; default: print(num); } print(" of "); int color = rgen.nextInt(1,4); switch(color){ case 1: print ("Spades"); break; case 2: print("Diamonds"); break; case 3: print("Clubs"); break; case 4: print("Hearts"); break; } } /*create an instance variable for the random number generator */ private RandomGenerator rgen =RandomGenerator.getInstance(); }
package SixthCharter; /* * File: TossCoin.java * --------------------------- * 这是第6章的第2题 * Author luoriver */ import acm.program.*; import acm.util.*; public class TossCoin extends ConsoleProgram { public void run(){ println("这个程序是抛硬币,一直抛到出现3个连续的下面为止,并显示被抛的总次数:"); int toss_num = 0; //设置检查点,是否到了连续的次数 int n = 0; while(n < CHECK_NUM){ tossCoin(); toss_num ++; if(tossCoin().equals("Head")){ println("Head"); n++; }else{ println("Tails"); n = 0; } } println("一共运行了" + toss_num + "次。"); } /** * 这里是进行的投币方法 */ private String tossCoin(){ int n = rgen.nextInt(1, 2); return returnContent(n); } /** * 这里是显示返回硬币的哪一面 * @Head * @Tails */ private String returnContent(int num){ if(num == 1){ return "Head"; }else{ return "Tails"; } } /*create an instance variable for the random number generator */ private RandomGenerator rgen =RandomGenerator.getInstance(); private static final int CHECK_NUM = 3; }
package SixthCharter; /* * File: ThrowDart.java * --------------------------- * 这是第6章的第3题 * Author luoriver */ import acm.program.*; import acm.graphics.*; import acm.util.*; public class ThrowDart extends ConsoleProgram { public void run(){ println("这个程序来用投镖来模拟正方形与圆形的面积之比是一个近似的 PI值:"); double SquareArea = 4 * (R * R); double CircleArea = PI * (R * R); println("圆形与正方形的面积之比为" + CircleArea / SquareArea); println("投镖时落在圆形与正方形内的次数之比为" + throwDart()); //println(3.14/4); //throwDart(); } private double throwDart(){ double circlenum = 0; double squarenum = 0; while(squarenum < ThrowNum){ double rx = rgen.nextDouble(-1.0, 1.0); double ry = rgen.nextDouble(-1.0, 1.0); // rgen.setSeed(2); if(((rx * rx) + (ry * ry)) < 1){ circlenum ++; squarenum ++; }else{ squarenum ++; } } println(); println("投在圆形内的次数为" + circlenum); println("投在正方形内的次数为" +squarenum); return circlenum / squarenum; } /*create an instance variable for the random number generator */ private RandomGenerator rgen =RandomGenerator.getInstance(); //设置投镖的次数 private static final int ThrowNum = 10000; private static final double PI = 3.14; private static final double R= 1; }
package SixthCharter; /* * File: Poker.java * --------------------------- * 这是第6章的第一题 * Author luoriver */ import acm.program.*; import acm.util.*; public class HalfLife extends ConsoleProgram { public void run(){ println("这个程序是模拟原子的半衰期"); println("There are " + RADIOACTIVE_ACTOM_NUM + "actom initially"); int left_num = RADIOACTIVE_ACTOM_NUM; int year = 0; while(left_num > 0){ int new_actom_num = left_halflife_actom_num(left_num); left_num -= new_actom_num; year ++; println("There are " + left_num + " actom at the end of year" + year); new_actom_num = 0; } } //定义衰减原子的数量 private int left_halflife_actom_num(int num){ int actom_num = 0; for(int i = num; i > 0; i -- ){ while(rgen.nextBoolean()){ actom_num ++; break; } } return actom_num; } /*create an instance variable for the random number generator */ private RandomGenerator rgen =RandomGenerator.getInstance(); /** * 定义放射性原子的数量 * @RADIOACTIVE_ACTOM_NUM */ private static final int RADIOACTIVE_ACTOM_NUM = 10000; }
package SixthCharter; /* * File: Poker.java * --------------------------- * 这是第6章的第5题 * Author luoriver */ import acm.program.*; import java.util.Scanner; import acm.util.*; public class Bingo extends ConsoleProgram { public void run() { /* * 首先询问是否要介绍下赌博规则,这里以后再写 读取文字不会先用数字代替吧,1代表继续,2代表不玩了 */ println(); int know_rules = readInt("你想了解赌博机的规则吗?1代表为想了解,2代表已经知道规则:"); if (know_rules == 1) { println(/*"内容太多,我没有写呢,看看Java语言的科学与艺术第172页吧"*/ RULES); } println("开始玩吧!祝玩的愉快!"); start_play(); } private void start_play(){ int remain_money = CLIENT_INIT_MONEY; print_remain_money(remain_money); while(remain_money > 0){ remain_money --; if(remain_money == 0){ println(""); } String first_show = show_result(); // print("111111" + first_show); String second_show = show_result(); // println("22222" + first_show); String third_show = show_result(); // print("333333333" + first_show); /*Scanner num = new Scanner(System.in); int n = num.nextInt();*/ int n = readInt(); if(n == 2) break; // print_remain_money(remain_money); if(first_show.equals("BAR") && second_show.equals("BAR") && third_show.equals("BAR")){ remain_money += 250; println(first_show + " " + second_show + " " + third_show +" you win" ); print_remain_money(remain_money); }else if(first_show.equals("BELL") && second_show.equals("BELL") && (third_show.equals("BELL") || third_show.equals("BAR"))){ remain_money += 20; println(first_show + " " + second_show + " " + third_show +" you win" ); print_remain_money(remain_money); }else if(first_show.equals("PLUM") && second_show.equals("PLUM") && (third_show.equals("PLUM") || third_show.equals("BAR"))){ remain_money += 14; println(first_show + " " + second_show + " " + third_show +" you win" ); print_remain_money(remain_money); }else if(first_show.equals("ORANGE") && second_show.equals("ORANGE") && (third_show.equals("ORANGE") || third_show.equals("BAR"))){ remain_money += 10; println(first_show + " " + second_show + " " + third_show +" you win" ); print_remain_money(remain_money); }else if(first_show.equals("CHERY") && second_show.equals("CHERY") && third_show.equals("CHERY")){ remain_money += 7; println(first_show + " " + second_show + " " + third_show +" you win" ); print_remain_money(remain_money); }else if(first_show.equals("CHERY") && second_show.equals("CHERY")){ remain_money += 5; println(first_show + " " + second_show + " " + third_show +" you win" ); print_remain_money(remain_money); }else if(first_show.equals("CHERY")){ remain_money += 2; println(first_show + " " + second_show + " " + third_show +" you win" ); print_remain_money(remain_money); }else{ println(first_show + " " + second_show + " " + third_show +" you loss" ); print_remain_money(remain_money); } } // print_remain_money(remain_money); } private void print_remain_money(int remain){ println("you have $" + remain + " would you like to play?"); } private String show_result() { int random_show = rgen.nextInt(1, 6); switch (random_show) { case 1: return "BAR"; case 2: return "LEMON"; case 3: return "ORANGE"; case 4: return "PLUM"; case 5: return "BELL"; default: return "CHERRY"; } } /* * 设定系统给用户初始钱 */ private static final int CLIENT_INIT_MONEY = 50; /* * create an instance variable for the random number generator */ private RandomGenerator rgen = RandomGenerator.getInstance(); private static final String RULES= "典型的赌博机有3个轮子,他们在一个狭窄的窗口后面旋转。每个轮子都标记为CHERRY、LEMON、ORANGE、PLUM、BELL和BAR。然而,窗口每次只允许看到一个轮子的一个符号。" +"下面显示的是典型的获胜模式及其相关回报:" +"BAR BAR BAR -- 支付 $250" + "BELL BELL BELL/BAR -- 支付 $20" + "PLUM PLUM PLUM/BAR -- 支付 $14" + "ORANGE - ORANGE - ORANGE/BAR -- 支付 $10" + "CHERRY - CHERRY - CHERRY -- 支付 $7" + "CHERRY - CHERRY - -- -- 支付 $5" + "CHERRY - CHERRY - -- -- 支付 $2"; };
package SixthCharter; /* * File: Poker.java * --------------------------- * 这是第6章的第5题 * Author luoriver */ import acm.program.*; import java.util.Scanner; import acm.util.*; public class Calculate extends ConsoleProgram { public void run() { int first = rgen.nextInt(0, 20); int second = rgen.nextInt(0, 20); sys_question(first, second); } /* * 定义系统提出问题的方法 */ private void sys_question(int first, int second) { for (int i = 0; i < PROBLEM_NUM; i++) { first = rgen.nextInt(0, 20); second = rgen.nextInt(0, 20); int sys_answer = first + second; if (sys_answer <= 20) { print(first + " + " + second + " = "); answer(sys_answer); } else { i--; } } } /* * 定义学生回答的方法 */ private void answer(int sys_answer) { int student_answer = readInt(); if (student_answer == sys_answer) { println(success()); } else { for (int i = 0; i < ANSWER_NUM; i++) { println("答案不正确,请再输入一遍"); student_answer = readInt(); } println("正确答案是" + sys_answer); } } /* * 显示输入正确答案后的鼓励信息 */ private String success() { int n = rgen.nextInt(1, 3); switch (n) { case 1: return "You got it"; case 2: return "connect"; default: return "That's the answer"; } } /* * create an instance variable for the random number generator */ private RandomGenerator rgen = RandomGenerator.getInstance(); /* * 定义出题的个数 */ private static final int PROBLEM_NUM = 5; /* * 定义学生错误回答问题的次数 */ private static final int ANSWER_NUM = 3; }
package SixthCharter; /* * File: Poker.java * --------------------------- * 这是第6章的第9题 * Author luoriver */ import acm.program.*; import acm.util.*; public class NewPoker extends ConsoleProgram { public void run(){ println("这个程序是随机显示选择的扑克"); int level = level(); String color = color(); Card show = new Card(level, color); println(); println("直接显示show类为" + show); println(); print(show.toString(level, color)); } public class Card{ public Card (int level, String color){ println("等级是" + level + "花色是" + color); } public String toString(int level, String color){ return "toString 方法显示等级为" + level + "花色是" + color; } } public int getLevel(){ return level(); } public String getColor(){ return color(); } /* * 显示随机的扑克牌 */ private void showPoker(){ int num = rgen.nextInt(1,13); // rgen.setSeed(2); switch(num){ case 1: print("Ace"); break; case 11: print("Jack"); break; case 12: print("Queen"); break; case 13: print("King"); break; default: print(num); } } private String color(){ int color = rgen.nextInt(1,4); switch(color){ case 1: // print("Spades"); return "Spades"; case 2: // print("Diamonds"); return "Diamonds"; case 3: // print("Clubs"); return "Clubs"; default: // print("Hearts"); return "Hearts"; } } private int level(){ int n = rgen.nextInt(1, 4); switch(n){ case 1: return LEVEL1; case 2: return LEVEL2; case 3: return LEVEL3; default: return LEVEL4; } /*private void color(){ int color = rgen.nextInt(1,4); switch(color){ case 1: print("Spades"); case 2: print("Diamonds"); case 3: print("Clubs"); case 4: print("Hearts"); } */ } /*create an instance variable for the random number generator */ private RandomGenerator rgen =RandomGenerator.getInstance(); /* * 定义扑克的花色常量 */ private static final String CLUBS = "CLUBS"; private static final String DIMONDS = "DIMONDS"; private static final String HEARTS = "HEARTS"; private static final String SPADES = "SPADES"; /* * 定义等级常量的值 */ private static final int LEVEL1 = 1; private static final int LEVEL2 = 11; private static final int LEVEL3 = 12; private static final int LEVEL4 = 13; }
package SixthCharter; public class LibaryRecord { public LibaryRecord(String book_name, String author, int catalog_number, String publisher, int public_date, boolean isCurrent){ this.book_name = book_name; this.author = author; this.catalog_number = catalog_number; this.publisher = publisher; this.public_date = public_date; this.isCurrent = isCurrent; } public LibaryRecord(String book_name, String author, int catalog_number, String publisher, int public_date){ this.book_name = book_name; this.author = author; this.catalog_number = catalog_number; this.publisher = publisher; this.public_date = public_date; isCurrent = true; } public String getBookName(){ return book_name; } public String getAuthor(){ return author; } public int getCatalogNum(){ return catalog_number; } public String getPublisher(){ return publisher; } public int getPublic_date(){ return public_date; } public boolean getisCurrent(){ return isCurrent; } public void setisCurrent(boolean isCurrent){ this.isCurrent = isCurrent; } @Override public String toString(){ return "Book_name" + book_name + " author: " + author + " 目录号: " + catalog_number + "出版者" + publisher + " 出版年份: " + public_date + " 当前是否流通: " + isCurrent; } /* * 定义书名 */ private String book_name; private String author; private int catalog_number; private String publisher; private int public_date; private boolean isCurrent; }
java语言的科学与艺术 第六章 课后编程,布布扣,bubuko.com
标签:斯坦福大学公开课 编程方法学 java语言的科学与艺术
原文地址:http://blog.csdn.net/netluoriver/article/details/30552521