Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8899

競プロ風じゃんけんプログラムを作る

$
0
0

競プロというと、あるお題が出され、テキストベースのテストデータが入力されると、ある結果を出力するように期待される。
今回は、じゃんけんプログラムを普通に作ったところで面白くないから、自分が出す手と勝負する回数をあらかじめ入力し、CPUと勝負した結果を出力するというじゃんけんを作る。

問題文

自分が勝負したい回数(N)を最初に入力し、その後、自分が出す予定の手(グー=0、チョキ=1、パー=2)をN回入力する。その後、CPUと対戦をし、その結果(あなたの勝ち=a、負け=b、あいこ=c)を出力せよ。

制約

  • 1≦N≦100

入力

入力は以下の形式で標準入力される。

N
012

出力

a
b
c

入力例1

5
02102

出力例

あなたの勝ち:2回
CPUの勝ち:1回
あいこ:2回

なお、あくまでこれは基本回答であるからして、創造力(クリエイティビティ:配点20)が高い出力結果を出してもよい。

回答例

qiita.cs
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceJanken{publicclassProgram{publicstaticstring[]jankenAA={"\nグー!   __\n     /」」」」\n     |っ丿\n  ∧_∧ / /\n ( ・ω・)/\n (つ  ノ\n  u-u","\nチョキ!\n     (V)\n     /アE)\n  ∧_∧ / /\n ( ・ω・)/\n (つ  ノ\n  u-u","\nパー!\n     「「「h\n     C ノ\n  ∧_∧ / /\n ( ・ω・)/\n (つ  ノ\n  u-u"};publicstaticvoidMain(string[]args){Console.WriteLine("※説明:最初に何回じゃんけんをするか回数を入力する。\nその後、回数分の自分の出すじゃんけん数値を入れる。\nグー=0、チョキ=1、パー=2");try{intn=int.Parse(Console.ReadLine());int[]jankMe=newint[n];for(inti=0;i<n;i++){stringjankme=Console.ReadLine();if(!(jankme.Equals("0")||jankme.Equals("1")||jankme.Equals("2"))){Console.WriteLine("じゃんけん番号じゃないです");i-=1;continue;}jankMe[i]=int.Parse(jankme);}for(intj=0;j<n;j++){//Console.Clear();Console.WriteLine("最初はグー、じゃんけん…");intpjank=Player(jankMe[j]);intcpjank=Cpu();Judge(pjank,cpjank);}Statistics(judgeList);Console.ReadKey(true);}catch(Exceptione){stringm=e.Message;Console.WriteLine(m);Console.ReadKey(true);}}/// <summary>/// プレイヤー/// </summary>/// <returns>じゃんけん番号</returns>publicstaticintPlayer(intjankMeNow){stringjanken=null;boolloopFlg=true;//while (loopFlg)//{//janken = Console.ReadLine();janken=jankMeNow.ToString();if(!(janken.Equals("0")||janken.Equals("1")||janken.Equals("2"))){Console.WriteLine("0か1か2で入れてください。");loopFlg=true;}else{loopFlg=false;}//}intjank=int.Parse(janken);Display(0,jank);returnjank;}/// <summary>/// CPU/// </summary>/// <returns>じゃんけん番号</returns>publicstaticintCpu(){intrandomInt=Janken();Display(1,randomInt);returnrandomInt;}/// <summary>/// 画面への表示/// </summary>/// <param name="isPlayer"></param>/// <param name="jank"></param>publicstaticvoidDisplay(intisPlayer,intjank){if(isPlayer==0){Console.Write("あなたは、");}else{Console.Write("コンピューターは、");}Console.WriteLine(jankenAA[jank]);}/// <summary>/// ランダム関数/// </summary>publicstaticRandomrand=newRandom();/// <summary>/// CPUがランダムで出すじゃんけんの関数/// </summary>/// <returns>ランダムで出した数</returns>publicstaticintJanken(){intjank=rand.Next(3);returnjank;}/// <summary>/// ジャッジ/// </summary>/// <param name="player"></param>/// <param name="cpu"></param>publicstaticList<int>judgeList=newList<int>();publicstaticvoidJudge(intplayer,intcpu){intjudge=0;if((player==0&&cpu==1)||(player==1&&cpu==2)||(player==2&&cpu==0)){Console.WriteLine("【プレイヤーが勝ち】");judge=0;}elseif((cpu==0&&player==1)||(cpu==1&&player==2)||(cpu==2&&player==0)){Console.WriteLine("【CPUが勝ち】");judge=1;}else{Console.WriteLine("【あいこ】");judge=2;}judgeList.Add(judge);Console.Write("\n");}publicstaticvoidStatistics(List<int>jlist){intplayerWin=jlist.Where(j=>j==0).Count();intcpuWin=jlist.Where(j=>j==1).Count();intdraw=jlist.Where(j=>j==2).Count();Console.WriteLine(string.Format("プレイヤーの勝利数:{0}\nCPUの勝利数:{1}\nあいこ数:{2}",playerWin,cpuWin,draw));}}}

入力結果

※説明:最初に何回じゃんけんをするか回数を入力する。
その後、回数分の自分の出すじゃんけん数値を入れる。
グー=0、チョキ=1、パー=2
3
0
1
2

出力結果

最初はグー、じゃんけん…
あなたは、
グー!   __
     /」」」」
     |っ丿
  ∧_∧ / /
 ( ・ω・)/
 (つ  ノ
  u-u
コンピューターは、
グー!   __
     /」」」」
     |っ丿
  ∧_∧ / /
 ( ・ω・)/
 (つ  ノ
  u-u
【あいこ】

最初はグー、じゃんけん…
あなたは、
チョキ!
     (V)
     /アE)
  ∧_∧ / /
 ( ・ω・)/
 (つ  ノ
  u-u
コンピューターは、
パー!
     「「「h
     C ノ
  ∧_∧ / /
 ( ・ω・)/
 (つ  ノ
  u-u
【プレイヤーが勝ち】

最初はグー、じゃんけん…
あなたは、
パー!
     「「「h
     C ノ
  ∧_∧ / /
 ( ・ω・)/
 (つ  ノ
  u-u
コンピューターは、
チョキ!
     (V)
     /アE)
  ∧_∧ / /
 ( ・ω・)/
 (つ  ノ
  u-u
【CPUが勝ち】

プレイヤーの勝利数:1
CPUの勝利数:1
あいこ数:1

はい。


Viewing all articles
Browse latest Browse all 8899

Trending Articles