PS:

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

注意:槽的奇偶情况

C++:

#include<iostream>
#include<ctime>
#include<string>
using namespace std;
class Machine {
public:
Machine(int,int);
void run();
void show_machine();
void show_road();
private:
int ball;
int slot;
int *count;
string *road;
};
Machine::Machine(int b, int s) : ball(b),slot(s) {
count = new int[s];
road = new string[b];
for (int i = 0; i < slot; i++)
count[i] = 0;
}
void Machine::run() {
double mid;
srand((unsigned int)time(0)); //随机
for (int i = 0; i < ball; i++) {
mid = ((double)slot - 1) / 2; //取中间值(小技巧:这里刚好使得slot奇偶都符合要求)
for (int j = 0; j < slot - 1; j++) {
if (rand() % 2) { //右移
mid += 0.5;
road[i] += 'R';
}
else { //左移
mid -= 0.5;
road[i] += 'L';
}
}
count[(int)mid]++; //该列count++
}
}
void Machine::show_road() { //显示每个球的路径
for (int i = 0; i < ball; i++)
cout << road[i] << endl;
}
void Machine::show_machine() { //显示机器
int flag;
string str;
for (int i = ball; i > 0; i--) { //模拟二维数组,当count[j]超过i,证明此行此列存在值
flag = 0;
str.clear();
for (int j = 0; j < slot; j++) {
if (count[j] >= i) {
str += "O";
flag = 1;
}
else
str+=" ";
}
if (flag) //使用str以及flag为了去除多余的空行
cout << str << endl;
}
}
int main() {
int ball, slot;
cout << "Enter the number of balls to drop : ";
cin >> ball;
cout << "Enter the number of slots in the bean machine : ";
cin >> slot;
cout << endl;
Machine My(ball, slot);
My.run();
My.show_road();
cout << endl;
My.show_machine();
return 0;
}

Java:

import java.util.Scanner;
public class BeanMachine {
int ball,slot;
int[] slots;
String []road; public BeanMachine(int b,int s) {
ball=b;slot=s;
slots=new int[s];
road=new String[b];
} public void run(){
double mid;
for(int i=0;i<ball;i++){
mid=((double)slot-1)/2;
road[i]=new String();
for(int j=0;j<slot-1;j++){
if(Math.random()>0.5){
mid+=0.5;
road[i]+="R";
}
else{
mid-=0.5;
road[i]+="L";
}
}
slots[(int)mid]++;
}
} public void ShowRoad(){
for (int i = 0; i < ball; i++)
System.out.println(road[i]);
} public void ShowMachine(){
String str;
int flag;
for (int i = ball; i > 0; i--) { //模拟二维数组,当count[j]超过i,证明此行此列存在值
flag = 0;
str="";
for (int j = 0; j < slot; j++) {
if (slots[j] >= i) {
str += "O";
flag = 1;
}
else
str+=" ";
}
if (flag==1) //使用str以及flag为了去除多余的空行
System.out.println(str);
}
} public static void main(String[] args) {
int ball,solt;
Scanner Input=new Scanner(System.in);
System.out.print("Enter the number of balls to drop : ");
ball=Input.nextInt();
System.out.print("Enter the number of slots in the bean machine : ");
solt=Input.nextInt();
BeanMachine My=new BeanMachine(ball,solt);
My.run();
My.ShowRoad();
My.ShowMachine(); }
}

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. ArcGIS案例学习笔记-点群密度统计

    ArcGIS案例学习笔记-点群密度统计 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:对于点群,统计分布密度 数据: 方法: 1. 生成格网 2. 统计个数, ...

  2. (转)C#如何加载程序运行目录外的程序集

    https://www.cnblogs.com/guanglin/p/3200989.html 我们的应用程序部署的时候,目录结构一般不会只有运行程序的目录这一个,我们可能在运行目录下建子目录,也可能 ...

  3. div下面多个a标签的点击事件,并且获取a的属性

    $('.fensiselect').on('click','a',function(){ var id= $(this).attr('fanid'); alert(id) })

  4. Java多线程及线程状态转换

    以下内容整理自:http://blog.csdn.net/wtyvhreal/article/details/44176369 线程:是指进程中的一个执行流程.  线程与进程的区别:每个进程都需要操作 ...

  5. sqlite 时间戳转时间

    ), 'unixepoch','localtime') from messages where data != '' order by timestamp desc 官方eg: Examples Co ...

  6. cdh 安装系列3--cdh manager 安装 cdh 6.01 版本

    安装前提是cdh manager 已经可以通过admin登录,管理台安装在192.168.20.163 一.安装自动TLS Setup Auto-TLS 1.ssh 192.168.20.163 2. ...

  7. js 判断整数

    参考 https://blog.csdn.net/tangxiujiang/article/details/78073792 1.使用取余运算符(%) + 判断对象是否是数字来判断: 注意:空字符串. ...

  8. Cisco ASR1002-X告警处理

    客户反馈其机房的ASR100X告警,拍照如下图: 处理步骤: 查看日志未发现异常 查看CPU/内存/风扇未发现异常 3.清除告警#clear facility alarm依旧告警 4.shutdown ...

  9. matlab基础绘图知识

    axis([xmin xmax ymin ymax])   %设置坐标轴的最小最大值 xlabel('string')                             %标记横坐标 ylabe ...

  10. Java 的静态工厂方法

    本文转载自:https://www.jianshu.com/p/ceb5ec8f1174 序:什么是静态工厂方法 Effective Java 2.1 静态工厂方法与构造器不同的第一优势在于,它们有名 ...