PS:

难点在于,随机之后的分隔,理解就很容易了

注意:槽的奇偶情况

C++:

  1. #include<iostream>
  2. #include<ctime>
  3. #include<string>
  4. using namespace std;
  5. class Machine {
  6. public:
  7. Machine(int,int);
  8. void run();
  9. void show_machine();
  10. void show_road();
  11. private:
  12. int ball;
  13. int slot;
  14. int *count;
  15. string *road;
  16. };
  17. Machine::Machine(int b, int s) : ball(b),slot(s) {
  18. count = new int[s];
  19. road = new string[b];
  20. for (int i = 0; i < slot; i++)
  21. count[i] = 0;
  22. }
  23. void Machine::run() {
  24. double mid;
  25. srand((unsigned int)time(0)); //随机
  26. for (int i = 0; i < ball; i++) {
  27. mid = ((double)slot - 1) / 2; //取中间值(小技巧:这里刚好使得slot奇偶都符合要求)
  28. for (int j = 0; j < slot - 1; j++) {
  29. if (rand() % 2) { //右移
  30. mid += 0.5;
  31. road[i] += 'R';
  32. }
  33. else { //左移
  34. mid -= 0.5;
  35. road[i] += 'L';
  36. }
  37. }
  38. count[(int)mid]++; //该列count++
  39. }
  40. }
  41. void Machine::show_road() { //显示每个球的路径
  42. for (int i = 0; i < ball; i++)
  43. cout << road[i] << endl;
  44. }
  45. void Machine::show_machine() { //显示机器
  46. int flag;
  47. string str;
  48. for (int i = ball; i > 0; i--) { //模拟二维数组,当count[j]超过i,证明此行此列存在值
  49. flag = 0;
  50. str.clear();
  51. for (int j = 0; j < slot; j++) {
  52. if (count[j] >= i) {
  53. str += "O";
  54. flag = 1;
  55. }
  56. else
  57. str+=" ";
  58. }
  59. if (flag) //使用str以及flag为了去除多余的空行
  60. cout << str << endl;
  61. }
  62. }
  63. int main() {
  64. int ball, slot;
  65. cout << "Enter the number of balls to drop : ";
  66. cin >> ball;
  67. cout << "Enter the number of slots in the bean machine : ";
  68. cin >> slot;
  69. cout << endl;
  70. Machine My(ball, slot);
  71. My.run();
  72. My.show_road();
  73. cout << endl;
  74. My.show_machine();
  75. return 0;
  76. }

Java:

  1. import java.util.Scanner;
  2. public class BeanMachine {
  3. int ball,slot;
  4. int[] slots;
  5. String []road;
  6. public BeanMachine(int b,int s) {
  7. ball=b;slot=s;
  8. slots=new int[s];
  9. road=new String[b];
  10. }
  11. public void run(){
  12. double mid;
  13. for(int i=0;i<ball;i++){
  14. mid=((double)slot-1)/2;
  15. road[i]=new String();
  16. for(int j=0;j<slot-1;j++){
  17. if(Math.random()>0.5){
  18. mid+=0.5;
  19. road[i]+="R";
  20. }
  21. else{
  22. mid-=0.5;
  23. road[i]+="L";
  24. }
  25. }
  26. slots[(int)mid]++;
  27. }
  28. }
  29. public void ShowRoad(){
  30. for (int i = 0; i < ball; i++)
  31. System.out.println(road[i]);
  32. }
  33. public void ShowMachine(){
  34. String str;
  35. int flag;
  36. for (int i = ball; i > 0; i--) { //模拟二维数组,当count[j]超过i,证明此行此列存在值
  37. flag = 0;
  38. str="";
  39. for (int j = 0; j < slot; j++) {
  40. if (slots[j] >= i) {
  41. str += "O";
  42. flag = 1;
  43. }
  44. else
  45. str+=" ";
  46. }
  47. if (flag==1) //使用str以及flag为了去除多余的空行
  48. System.out.println(str);
  49. }
  50. }
  51. public static void main(String[] args) {
  52. int ball,solt;
  53. Scanner Input=new Scanner(System.in);
  54. System.out.print("Enter the number of balls to drop : ");
  55. ball=Input.nextInt();
  56. System.out.print("Enter the number of slots in the bean machine : ");
  57. solt=Input.nextInt();
  58. BeanMachine My=new BeanMachine(ball,solt);
  59. My.run();
  60. My.ShowRoad();
  61. My.ShowMachine();
  62. }
  63. }

Java 7.21 游戏:豆机(C++&Java)的更多相关文章

  1. 【转】【JAVA资料免费下载】158个JAVA免豆精品资料汇总——下载目录

    附件完整版下载地址: http://down.51cto.com/data/431561 附件部分预览~ java中国移动收费系统[源代码] http://down.51cto.com/data/70 ...

  2. java 人机猜拳 游戏

    人机猜拳-游戏 掌握类和对象的使用,掌握方法的定义和返回值,掌握封装的运用 定义一个电脑类:Computer.java 点击查看[Computer.java]代码 /** * @Title: 电脑类 ...

  3. 2015-2016-2 《Java程序设计》 游戏化

    2015-2016-2 <Java程序设计> 游戏化 实践「<程序设计教学法--以Java程序设计为例>」中的「游戏化(Gamification)理论」,根据 2015-201 ...

  4. 实验三 Java猜数字游戏开发

    课程:Java实验   班级:201352     姓名:程涵  学号:20135210 成绩:             指导教师:娄佳鹏   实验日期:15.06.03 实验密级:         ...

  5. 相当牛X的java版星际游戏

    分享一款牛人用java写的经典游戏,目录结构如下: 虽然只能算一个Demo,但是用到了很多Java基础技术和算法: Java2D,双缓冲,A星寻路,粒子系统,动画效果,处理图片,Swing ui ,U ...

  6. Java太阳系小游戏分析和源代码

    Java太阳系小游戏分析和源代码 -20150809 近期看了面向对象的一些知识.然后跟着老师的解说做了一个太阳系各行星绕太阳转的小游戏,来练习巩固一下近期学的知识: 用到知识点:类的继承.方法的重载 ...

  7. 【转】Java数字抽奖游戏核心代码

    1. [代码][Java]代码    package com.luiszhang.test; import java.util.Arrays; /** * NumberLotteryGame * 一个 ...

  8. Java五子棋小游戏(控制台纯Ai算法)

    Java五子棋小游戏(控制台纯Ai算法) 继续之前的那个五子棋程序 修复了一些已知的小Bug 这里是之前的五子棋程序 原文链接 修复了一些算法缺陷 本次增加了AI算法 可以人机对战 也可以Ai对Ai看 ...

  9. 基于java的雷电游戏

    基于java的雷电游戏基本功能包括:敌方飞机随机飞行.我方飞机手动控制飞行,射击比拼,游戏闯关等.本系统结构如下: (1)雷电游戏状态调整功能: 在游戏启动时,游戏会自动进行初始化的验证. 若初始化成 ...

随机推荐

  1. Oracle Oracle数据库 迁移到 SQL Server上

    原地址:https://blog.csdn.net/LongtengGensSupreme/article/details/81355181

  2. Python之路 - Socket实现远程执行命令

    Python之路 - Socket实现远程执行命令 os模块实现

  3. 安装opencv3.x卡在ICV: Downloading ippicv_linux_20151201.tgz...

    参考:http://blog.csdn.net/bobsweetie/article/details/52502741 可以自己下载: ICV: Downloading ippicv_linux_20 ...

  4. 前往央都之行-gdufe1529

    前往央都之行 Time Limit: 2000/1000ms (Java/Others) Problem Description: 刀光哥桐人和尤吉欧两人为了拯救爱丽丝,同时从卢利特村出发要尽快同时赶 ...

  5. property 、classmethod 、 staticmethod 的用法

    @property # property是一个装饰器函数 ,作用:将一个方法伪装成属性 # 所有的装饰器函数都怎么用? 在函数.方法.类的上面一行直接@装饰器的名字 # 装饰器的分类: # 装饰函数 ...

  6. Linux下Shell命令加减乘除计算

    使用 expr命令 (其中做乘的时候*号要用斜杠进行转义) 除以 [hadoop-user@hadoop1]$ echo `expr 9 / 3`             3加 [hadoop-use ...

  7. numpy中的数学

    1.dot,exp v = np.dot(arg1,arg2) #矩阵乘法 v2 = np.exp() # e的-x 次方

  8. java.security.MessageDigest (1)

    我们知道,编程中数据的传输,保存,为了考虑安全性的问题,需要将数据进行加密.我们拿数据库做例子.如果一个用户注册系统的数据库,没有对用户的信息进行保存,如,我去页面注册,输入"Vicky&q ...

  9. iftop网络流量查看工具

    1.下载iftop源码包 mkdir /usr/local/src/iftop cd /usr/local/src/iftop wget http://www.ex-parrot.com/~pdw/i ...

  10. Nginx 功能

      本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得,欢迎留言交流. Nginx能做什么 ...