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. JSTL标签不起作用的解决办法

    JSP页面中的EL标签直接成字符串输出(如:${user.id}),说明el标签没有被识别,造成的原因有: 1.jdk+jstl的组合不匹配 2.web.xml版本不匹配 但我们解决以上这个问题时,先 ...

  2. python错题整理

    1.列表list去重 l1 = [1,1,2,3,5,5,4,4,4,5,6] set1 = set(l1) # print(set1) # set是集合 l2 = list(set1) # 将集合转 ...

  3. php mysql 查询判断周几

    $where .= " and (DAYOFWEEK( from_unixtime(`px_time`, '%Y-%m-%d')) = 1)";  //周日从1开始

  4. idea 热部署之JRebel安装-激活-简单使用(修改方法\配置文件均生效)

    1.简介 JRebel插件在IntelliJ IDEA中用于代码的热部署,即工程在已经启动的状态下修改代码,可以不用再重启服务,JRebel插件会自动帮我们编译代码,然后重启.整个重启的过程耗时非常短 ...

  5. Spread Syntax

    [Spread Syntax] The spread syntax allows an expression to be expanded in places where multiple argum ...

  6. python网络编程之互斥锁

    标签(空格分隔): 互斥锁 进程之间的数据不共享,但是共享同一套文件系统,所以访问同一个文件,或者同一个打印终端,是没有问题的,而共享带来的问题就是竞争,竞争带来的结果就是错乱,如下: #并发运行,效 ...

  7. Could not open Selected VM debug port (8700) (转)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 在运行项目的时候,eclipse弹出提示框“Could not open Selected VM debug port (8700). Make ...

  8. 第四章 栈与队列(c3)栈应用:栈混洗

  9. 江西财经大学第一届程序设计竞赛 F题 解方程

    链接:https://www.nowcoder.com/acm/contest/115/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  10. Mybatis抛出 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@f54509]异常

    今天在做Springmvc和spring 时 mybatis 是抛出异常 Closing non transactional SqlSession [org.apache.ibatis.session ...