c#实现简单金山打字小游戏(源码)
using GameDemo.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GameDemo
{
class Program
{
static void Main(string[] args)
{
int total=0;//计时
Console.WriteLine("开始游戏");
Console.WriteLine("准备好开始游戏吗?y/n?");
if (Console.ReadLine().Equals("n")) {
Console.WriteLine("游戏已退出!");
return;
}
Console.WriteLine("请输入关卡数量");
int gk = Int32.Parse(Console.ReadLine());
Console.WriteLine("请输入每个关卡输入的次数");
int count = Int32.Parse(Console.ReadLine());
Console.WriteLine("请输入闯关输入的字数的个数");
int size = Int32.Parse(Console.ReadLine());
for (int i = 0; i <gk; i++)
{
for (int j = 0; j <count; j++)
{
Console.WriteLine("这是第"+(i+1)+"关"+"第"+(j+1)+"次");
//产生随机字母
string str = new RandomUtils().CreateRandomWord(size);
Console.WriteLine("你要输入的内容为:"+str);
//时间计算
DateTime start = DateTime.Now;
//等待用户输入
string userinput=Console.ReadLine();
DateTime end = DateTime.Now;
int t= (int)(end.Ticks - start.Ticks)/10000000;//单次计时
total += t;//总计时
//检查用户输入是否正确
if (userinput.Equals(str))
{
Console.WriteLine("恭喜,你输入对了!用时"+t+"秒");
}
else {
Console.WriteLine("抱歉,你输入错了,游戏结束!");
return;
}
}
if (i == gk-1) {//闯完所有关卡
Console.WriteLine("恭喜你全部过关,总用时为"+total+"秒");
return;
}
Console.WriteLine("准备好进入下一关了吗 y/n");
string comd = Console.ReadLine();
if (comd.Equals("n")) {
Console.WriteLine("游戏已退出!");
return;
}
}
}
}
}
//生产字符串的工具类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GameDemo.Utils
{
class RandomUtils
{
/// <summary>
/// 用来装载字符的数组
/// </summary>
private char[] chars = new char[50];
/// <summary>
/// 初始化数组数据
/// </summary>
public RandomUtils() {
//得到a-z的字符
int idx=0;
for (int i = 'a'; i <'z'+1; i++)
{
if (i == 'o') {//去掉o字母
continue;
}
chars[idx] += (char)i;
idx++;
}
//得到1-9的字符
int idx2=idx;
for (int j ='0'; j <'9'+1; j++)
{
chars[idx2++] = (char)j;
}
//重新组装数据
char[] newchars = new char[idx2];
for (int m = 0; m <idx2; m++)
{
if (chars[m] == 'l') {//将小写的l换成L
chars[m] = 'L';
}
newchars[m] = chars[m];
}
//将重组后的新数组赋值给原来的数组便于给其他方法访问数组数据
chars = newchars;
}
/// <summary>
/// 随机产生字符串
/// </summary>
/// <param name="size">产生的字符串个数</param>
/// <returns></returns>
public string CreateRandomWord(int size) {
StringBuilder builder = new StringBuilder();
Random r = new Random();
for (int i = 0; i <size; i++)
{
char c = chars[r.Next(chars.Length)];
if (builder.ToString().Contains(c)) {//处理字符串重复出现
i--;
continue;
}
builder.Append(c);
}
return builder.ToString();
}
}
}
c#实现简单金山打字小游戏(源码)的更多相关文章
- HTML5小游戏源码收藏
html5魅族创意的贪食蛇游戏源码下载 html5网页版打砖块小游戏源码下载 html5 3D立体魔方小游戏源码下载 html5网页版飞机躲避游戏源码下载 html5三国人物连连看游戏源码下载 js ...
- Creator仿超级玛丽小游戏源码分享
Creator仿超级玛丽小游戏源码分享 之前用Cocos Creator 做的一款仿超级玛丽的游戏,使用的版本为14.2 ,可以直接打包为APK,现在毕设已经完成,游戏分享出来,大家一起学习进步.特别 ...
- flappy pig小游戏源码分析(1)——主程序初探
闲逛github发现一个javascript原生实现的小游戏,源码写的很清晰,适合想提高水平的同学观摩学习.读通源码后,我决定写一系列的博客来分析源码,从整体架构到具体实现细节来帮助一些想提高水平的朋 ...
- flappy pig小游戏源码分析(3)——解剖util
这一节我们继续高歌猛进,如果对源码中有无论无何都理解不通的问题,欢迎和我交流,让我也学习一下,我的qq是372402487. 还是按照惯例看看我们的目录结构. 我们在前两节中已经分析了game.js, ...
- flappy pig小游戏源码分析(2)——解剖option
今天继续分析flappy bird的源码.重温一下源码的目录结构. 在本系列第一篇中我们分析了game.js文件,也就是整个程序的架构.这一篇我们来看看option.js文件,这个文件的内容很简单,主 ...
- h5小球走迷宫小游戏源码
无意中找到的一个挺有意思的小游戏,关键是用h5写的,下面就分享给大家源码 还是先来看小游戏的截图 可以用键盘的三个键去控制它,然后通关 下面是源代码 <!doctype html> < ...
- C\C++ 1A2B小游戏源码
学了一段时间,心血来潮写了一个1A2B小游戏,很多人应该玩过,是一个挺有意思的益智小游戏,之前用易语言写过,现在又用C++重写了一下. 编译运行无错,整体程序设计思路为:进入循环,初始化游戏,读入一个 ...
- flappy pig小游戏源码分析(4)——核心pig模块(未完待续)
热身之后,我们要动点真格的了,游戏叫flappy pig,我们的pig终于要出场了. 老规矩,看看目录结构,读者对着目录结构好好回想我们已经讲解的几个模块: 其中game.js是游戏主程序,optio ...
- 2d命令行小游戏源码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
随机推荐
- 各大主流.Net的IOC框架性能测试比较
Autofac下载地址:http://code.google.com/p/autofac/ Castle Windsor下载地址:http://sourceforge.net/projects/cas ...
- IOS热更新-JSPatch实现原理+Patch现场恢复
关于HotfixPatch 在IOS开发领域,由于Apple严格的审核标准和低效率,IOS应用的发版速度极慢,稍微大型的app发版基本上都在一个月以上,所以代码热更新(HotfixPatch)对于IO ...
- eclipse android工程没有错却出现红叉
[转]eclipse android工程没有错却出现红叉 问题描述: 这是一个很变态的问题,花了我N多时间才解决掉,而且弄得心情非常郁闷,这明显是ADT的bug嘛,为什么最新的版本还没有解决? 将Li ...
- PHP 5.4 已废弃 magic_quotes_gpc,PHP安全转义函数详解(addslashes 、htmlspecialchars、htmlentities、mysql_real_escape_string、strip_tags)
1. addslashes() addslashes()对SQL语句中的特殊字符进行转义操作,包括(‘), (“), (), (NUL)四个字符,此函数在DBMS没有自己的转义函数时候使用,但是如果D ...
- 【SCOI2005】 最大子矩阵 BZOJ 1084
Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. Input 第一行为n,m,k(1≤n≤100,1≤m≤2 ...
- 瀑布流布局——jquery
首先确定定位,因为.box的宽度是确定的,根据屏幕的宽度来调整.box的列数,所以#content的宽度是随着.box的列数变化而变化的,并且需要保持相对于body居中. 因此需要给#content添 ...
- bootstrap使用心得及css模块化的初步尝试
第一次用bootstrap到实战项目,是一个企业门户站,可以说是强行拿bootstrap上来练手,感觉并不适合. 我是用的less编译bootstrap文件,直接改less变量.然后把不可重用的部分, ...
- MySQL 5.6 for Windows 解压缩版配置安装
MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的.如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大家的英文可以看懂英文提示),一般MySQL将会安装在C:\P ...
- Effective C++阅读笔记_条款2:尽量以const,enum,inline替换#define
1.#define缺点1 #define NUM 1.2 记号NUM可能没有进入记号表,在调试或者错误信息中,无法知道1.2的含义. 改善:通过const int NUM = 1.2; 2.#dein ...
- Java中的Serializable接口transient关键字,及字节、字符、对象IO
1.什么是序列化和反序列化Serialization是一种将对象转为为字节流的过程:deserialization是将字节流恢复为对象的过程. 2.什么情况下需要序列化a)当你想把的内存中的对象保存到 ...