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. fwrite()中参数含义——size和count经常用搞反

    函数原型:size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);   注意:这个函数以二进制形式对文件进 ...

  2. vc读取当前路径和读取配置ini文件

    //获取路径 std::string GetApplicationDir() { HMODULE hModule = GetModuleHandleW(NULL); WCHAR wpath[MAX_P ...

  3. JavaScriptConverter

    public class DatePartsConverter : JavaScriptConverter { public override IEnumerable<Type> Supp ...

  4. ubuntu14安装TensorFlow

    1.安装ubuntu 网址:https://www.cnblogs.com/blog4matto/p/5581914.html 选择ubuntu14的原因:最初是想安装16的,后来发现总出问题,网上查 ...

  5. hibernate ID

            一:主键生成策略大体分类: 1:hibernate 负责对主键ID赋值  2:应用程序自己为主键ID赋值(不推荐使用) 3:底层数据库为主键ID赋值         二:具体用法    ...

  6. Java中的IO流,Input和Output的用法,字节流和字符流的区别

    Java中的IO流:就是内存与设备之间的输入和输出操作就成为IO操作,也就是IO流.内存中的数据持久化到设备上-------->输出(Output).把 硬盘上的数据读取到内存中,这种操作 成为 ...

  7. React中innerHTML的坑

    [React中innerHTML的坑] 通过React Ref机制返回的对象,是一个阉割的DOM对象,并非原始DOM对象.比如,这个阉割版的DOM对象没有innerHTML对象. <button ...

  8. webpack-manifest-plugin

    [webpack-manifest-plugin] Webpack plugin for generating an asset manifest. This will generate a mani ...

  9. python学习 day23 面向对象三大特性之继承

    ### 面向对象三大特性值继承#### 1.什么是继承 继承是一种关系,必须存在两个对象才可能产生这种关系,在现实生活中的继承,王思聪可以继承王健林的财产 被继承的成为父,继承的一方成为子 在程序中, ...

  10. springboot jpa sql查询与传值

    public interface ARepository extends PagingAndSortingRepository<A, APK>, JpaSpecificationExecu ...