Skip to content

Instantly share code, notes, and snippets.

@oyakodon
Created March 6, 2016 08:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oyakodon/097b93bc22d42f2e9a6f to your computer and use it in GitHub Desktop.
Save oyakodon/097b93bc22d42f2e9a6f to your computer and use it in GitHub Desktop.
ぬるぽゲームを改造したやつ / C# Console
using System;
using System.Collections.Generic;
using System.Timers;
class Program
{
private static int sec = 0; // 時間
static void Main(string[] args)
{
var rnd = new Random(Environment.TickCount - 1); // 乱数
var nullpo = new List<char>() { 'ぬ', 'る', 'ぽ' }; // 「ぬるぽ」の3文字のChar型配列
var str = ""; // これまで選択された文字をどんどんケツに連結させるためのString
var i = 1; // 何文字目か
var debug = false; // デバッグか否か
var practice = false; // ぬるぬるタイピング
var timer = new Timer(); // カウントダウンのためのタイマー
Console.Title = "Ctrlキーと一緒に押すといいことあるかも...?"; // 地味にタイトル変えてる
Console.WriteLine("ランダムに表示される「ぬ」と「る」と「ぽ」は");
Console.WriteLine("何文字目で「ぬるぽ」になるでしょうか?");
Console.Write("続行するには何かキーを押してください. . . > ");
var keyinfo = Console.ReadKey(); // キー入力1文字
if ( keyinfo.Modifiers == ConsoleModifiers.Control )
{
// コントロールキーが押されていたら
// ぬるぬる触手タイピングモード起動(触手はない模様)
practice = true;
timer.Elapsed += Timer_Elapsed; // イベント追加
timer.Interval = 1000; // 1秒
}
else if ( keyinfo.Modifiers == ConsoleModifiers.Shift )
{
// シフトキーが押されていたら
debug = true;
Console.WriteLine("");
Console.Write("Please input \"i\" value...(Caution:[INT]) > ");
i = int.Parse(Console.ReadLine());
}
Console.WriteLine();
if ( practice )
{
Console.WriteLine("[NullNull(ぬるぬる)モード]"); // 何か黄色い超破壊生物をほうふつとさせる。
Console.WriteLine("表示された文字を制限時間以内に打とう!");
Console.WriteLine("最後まで打てると、ゆかりさんがもっとセクシーな姿に・・・!? "); // なりません。元ネタ「幸せになれる隠しコマンドがあるらしい:歌詞」
Console.Write("難易度?[ 1:EASY 2: NOMAL 3: HARD ] > "); // HARDは鬼畜だからやめとけ、やめとけって言ったからな!
var difficulity = int.Parse(Console.ReadLine()); // 難易度設定
Console.WriteLine();
var turn = 1; // 何ターン(与えられる文の数)
var lose = false; // 負けフラグ
var limit = 15; // 制限時間
while ( turn <= difficulity * 4 ) // 与えられる文の数 = 難易度(1, 2, 3) * 4 EASY:4 NOMAL:8 HARD: 12
{
if ( turn > 4 )
{
// 4ターン以降は制限時間増加。(NOMAL, HARD向け設定)
limit = 20;
}
if ( turn > 8 )
{
// 8ターン以降は制限時間増加。(HARD向け設定)
limit = 25;
}
while ( str.Length <= turn * 5 ) // 文字数 = ターン * 5 最終的に EASY:20 NOMAL:40 HARD: 60 まで増える
{
var index = rnd.Next(114514) % 2; // 0~114514-1までの乱数を2で割ったあまり(0, 1)
var chosen_char = nullpo[index]; // ぬるぽ配列からランダムに選択(ぬ or る)
str += chosen_char; // ケツに突っ込む
}
str += ""; // 末尾にぽをつけて可愛くする
Console.WriteLine(str);
Console.Write("> ");
sec = limit; // 制限時間を設定して
timer.Start(); // タイマースタート
var input = Console.ReadLine();
while ( true )
{
if ( input == str )
break;
Console.WriteLine("[入力が間違っています!]");
Console.WriteLine(str);
Console.Write("> ");
input = Console.ReadLine();
if ( sec < 0 )
{
Console.WriteLine("[制限時間を超えました・・・]");
lose = true; // m9(^Д^)プギャー 打てないでやんのー ※親子丼はHARD無理でした
break;
}
}
if ( lose )
break; // 2重ループから抜ける
// 各種リセット
timer.Stop();
str = "";
++turn;
}
Console.Title = "";
if ( !lose )
{
// ちゃんとできた
Console.WriteLine("Congratulations!!");
Console.WriteLine();
Console.WriteLine("セクシーな姿になると思った?ねぇねぇ、なると思った?");
Console.WriteLine("(セクシーな姿になら)ないです。");
Console.WriteLine();
Console.Write("続行するには何かキーを押してください. . . > ");
Console.ReadKey();
Console.WriteLine();
Console.WriteLine("そんなこと思っちゃう貴方にはお仕置きナリ。"); // トイレに行ってもいいですか 「駄目です」
}
else
{
// 制限時間オーバー
Console.WriteLine("Failed...");
Console.WriteLine();
Console.Write("続行するには何かキーを押してください. . . > ");
Console.ReadKey();
Console.WriteLine();
}
Console.WriteLine("あああああああああああああああああああああああああああああああ!!!!!!!!!!!(ブリブリブリブリュリュリュリュリュリュ!!!!!!ブツチチブブブチチチチブリリイリブブブブゥゥゥゥッッッ!!!!!!! )");
// 汚い。
throw new NullReferenceException();
// 結局ぬるぽする。
}
else
{
while ( !debug )
{
var index = rnd.Next(114514) % 3; // 0~114514-1までの乱数を3で割ったあまり(0, 1, 2)
var chosen_char = nullpo[index]; // ぬるぽ配列からランダムに選択
str += chosen_char; // ケツに突っ込む
if ( str.Length % 8 == 0 )
{
Console.Write(chosen_char + "\n"); // 8文字だったら改行してから表示
}
else
{
Console.Write(chosen_char); // 表示
}
if ( str.Contains("ぬるぽ") ) // 「ぬるぽ」文字列が現れたら
{
break; // whileループを抜ける
}
else
{
++i; // 回数 + 1
}
}
Console.WriteLine();
if ( i == 3 )
{
// 乱数が「0 1 2」の順番で現れ、すんなり「ぬるぽ」した
Console.WriteLine("いっぱつで「ぬるぽ」しました!");
}
else if ( i < 100 )
{
// 100文字以下でぬるぽ出現
Console.WriteLine(i + "文字目で「ぬるぽ」しました!");
}
else
{
// 乱数のせいで100回以上かかってしまった
Console.WriteLine("あああああああああああああああああああああああああああああああ!!!!!!!!!!!(ブリブリブリブリュリュリュリュリュリュ!!!!!!ブツチチブブブチチチチブリリイリブブブブゥゥゥゥッッッ!!!!!!! )");
// 汚い。
Console.WriteLine("" + i + "文字目で「ぬるぽ」しました。");
}
// ガッ
// ※AAはちゃんと表示されない可能性があります、適時調節してください。
Console.WriteLine(
"( ・∀・)   || ガッ\n" +
"と    )    ||\n" +
" Y / ノ 人\n" +
" / ) < > __Λ∩\n" +
" _/ し'//. V`Д´)/ \n" +
"(_フ彡 /\n");
Console.Write("続行するには何かキーを押してください. . . > ");
Console.ReadKey();
Console.WriteLine();
if ( !debug )
{
// 結局ぬるぽする
Console.WriteLine("すみません、C#では「NullReferenceException」でした。");
throw new NullReferenceException();
}
else
{
Console.WriteLine("/* ここでNullReferenceException */");
}
}
}
private static void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
// カウントダウンする
--sec;
Console.Title = (sec > 0 ? "制限時間:残り" + sec + "" : "制限時間を超えました・・・"); // タイトルで制限時間をお知らせ。貴方を焦らせる。
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment