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. 看懂class文件 转

    前言 现在周六公司进行一系列的java培训,刚上来就给我看class文件,比较头疼,不过感觉还是学到了一些东西,毕竟像老大说的,想要变得牛逼,是需要多学习多看的.好了,闲话不多说,我整理了一下思路,记 ...

  2. express返回html文件

    [express返回html文件] app.engine(ext, callback) 方法即可创建一个你自己的模板引擎.其中,ext 指的是文件扩展名.callback 是模板引擎的主函数,接受文件 ...

  3. hibernate ORA-17059 无法转换为内部表示

    参考 https://jingyan.baidu.com/article/2fb0ba40a25a2b00f2ec5fc7.html 数据库里的字段类型与Java实体类中的对应字段属性类型不匹配

  4. PUDN用户名与密码

    Pudn 用户名与密码 boumang8171    que2538  温馨提示:1.  95%的用户第一次登录不成功,都是因为在复制粘贴帐号和密码时,把空格也复制粘贴上了.2. 如果连续3次帐号或密 ...

  5. 【转】自动化测试框架: pytest&allure ,提高自动化健壮性和稳定性

    序 在之前,我写过一个系列“从零开始搭建一个简单的ui自动化测试框架(pytest+selenium+allure)”,在这个系列里,主要介绍了如何从零开始去搭建一个可用的自动化工程框架,但是还缺乏了 ...

  6. POJ3259 :Wormholes(SPFA判负环)

    POJ3259 :Wormholes 时间限制:2000MS 内存限制:65536KByte 64位IO格式:%I64d & %I64u 描述 While exploring his many ...

  7. 81. Search in Rotated Sorted Array II (Array; Divide-and-Conquer)

    Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this ...

  8. Python+Selenium学习--定位iframe中的对象

    场景 在web 应用中经常会出现frame 嵌套的应用,假设页面上有A.B 两个frame,其中B 在A 内,那么定位B 中的内容则需要先到A,然后再到B.      switch_to_frame ...

  9. JAVA去重

    JAVA中去掉空格 1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 ...

  10. FortiGate密码恢复

    1.需求 1.若设备的密码忘记,需要用配置线进行密码恢复: 2.密码恢复需要重启设备,并在设备的底层菜单界面上操作,会造成网络中断,请在方便断网时操作: 3.密码恢复后配置不会改变. 2.操作步骤 1 ...