*

[c++,cpp]C++でじゃんけんをしよう

公開日: : C++, プログラミング

過去に書いた超くだらないソースを見つけたので衝動的にうp。

C++でじゃんけんをしよう!

たぶんC++を勉強していたときの初期の頃のソースです。
C++のオブジェクト指向とアクセサの使い方の勉強でもしてたのかな?

#include "stdafx.h"
#include <iostream>
#include <string>
#include "Janken.h"

using namespace System;
using namespace std;

const int EXIT = 9;

int input();
void output(int result, int pc, int npc);

int main(array<System::String ^> ^args){
	cout << "***ジャンケンプログラム***" << endl;

	int hand = 0;
	Janken janken;
	while((hand = input()) != EXIT){
		int npcHand = janken.SelectNPCHands();
		int result = janken.IsWonPlayer(hand, npcHand);
		output(result, hand, npcHand);
	}

	cout << "終了入力されました。\n終了します" << endl;
	return 0;
}

int input(){
	int result = EXIT;

	cout << "手を選んでください(9を入力で終了)" << endl;
	cout << "グー:g チョキ:c パー:p" << endl;
	string input;

	cin >> input;

	if(input != "9"){
		Janken janken;
		result = janken.SelectHands(input);
	}

	return result;
}

void output(int result, int pc, int npc){
	string pchand;
	string npchand;

	Janken janken;
	pchand = janken.GainHandName(pc);
	npchand = janken.GainHandName(npc);

	cout << "PC:" << pchand << " NPC:" << npchand << endl;

	if(result == Janken::DRAW){
		cout << "引き分けです" << endl;
	}else if(result == Janken::WON){
		cout << "あなたの勝ちです" << endl;
	}else{
		cout << "あなたの負けです" << endl;
	}
}
#pragma once
#include <string>

ref class Janken
{
public:
	static const int GOO = 0;
	static const int CHOKI = 1;
	static const int PAA = 2;
	static const int ERROR = 3;
	static const int DRAW = 10;
	static const int WON = 11;
	static const int LOST = 12;
	Janken(void);
	int SelectHands(std::string inputStr);
	int SelectNPCHands();
	int IsWonPlayer(int pc, int npc);
	std::string GainHandName(int hand);
};
#include "stdafx.h"
#include "Janken.h"
#include <iostream>
#include <string>

Janken::Janken(void){

}

int Janken::SelectHands(std::string inputStr){
	int result = Janken::ERROR;

	if(inputStr == "g" || inputStr == "G"){
		result = Janken::GOO;
	}else if(inputStr == "c" || inputStr == "C"){
		result = Janken::CHOKI;
	}else if(inputStr == "p" || inputStr == "P"){
		result = Janken::PAA;
	}

	return result;
}

int Janken::SelectNPCHands(){
	return rand() % 3;
}

int Janken::IsWonPlayer(int pc, int npc){
	int result = Janken::DRAW;
	
	if(pc == Janken::CHOKI && npc == Janken::GOO || pc == Janken::GOO && npc == Janken::PAA || pc == Janken::PAA && npc == Janken::CHOKI){
		result = Janken::LOST;
	}else if(npc == Janken::CHOKI && pc == Janken::GOO || npc == Janken::GOO && pc == Janken::PAA || npc == Janken::PAA && pc == Janken::CHOKI){
		result = Janken::WON;
	}

	return result;
}

std::string Janken::GainHandName(int hand){
	std::string handName;

	if(hand == Janken::CHOKI){
		handName = "チョキ";
	}else if(hand == Janken::GOO){
		handName = "グー";
	}else{
		handName = "パー";
	}

	return handName;
}

↓実行するとこんな感じ↓
VisualStudio_

パーはPAAでいいとしてグーはGOOでいいのか、とか、
const指定した定数を利用するのに拘ってるように見えるのに、「if(input != “9″){」の記述はいいのか、とか、
なんでGetじゃなくてGainやねん、とか、
色々突っ込みどころ満載です。

ad

関連記事

wannabenote

[Excel,C#]C#でExcelにデータを一括出力する

大体いつも忘れるこのやり方。 Excelにデータを出力する 方法論 単純な方法ではデータを一行

記事を読む

Unity_

[Unity]Unity2Dチュートリアル 直線で3つ同色のパズルを消去する ソース解説

◆全文 using UnityEngine; using System.Collection

記事を読む

NuGet visual studio

[C#]C#でPDFファイルを画像(System.Drawing.Image)にする

PDFを画像に PDFファイルを読み込んで、画像にする必要があったんです。 インターネットで調べ

記事を読む

Unity_

[Unity]Unity2Dチュートリアル 同じ色で繋がったパズルを消去する ソース解説

◆全文 using UnityEngine; using System.Collecti

記事を読む

wannabenote

[Visual Studio]いつもの文章をコピペするぐらいならSnippetizer使いませんか

Visual StudioのSnippetizerって使ってますか。 あれ? 意外に知らん人多いの

記事を読む

logo

[iTextSharp,C#]TifファイルをPDFに変換する。

TifファイルをPDFに変換してほしいと言われて作ったときのソースのメイン部分を抜粋です。 確

記事を読む

TeamFoundation

[TFS]Team Foundation Server Express構築手順

Team Foundation Server Express構築のときの手順です。 うちでは今のと

記事を読む

logo

[C#]AS400のメンバーを指定してデータにアクセスする

◆前提条件◆ CliantAccessをインストールしている。 .NET Framework3.

記事を読む

logo

プログラミング概論 導入

プログラミングは基礎から覚えた私ですので、やはり基礎から書いていきます。 よくプログラミングのサイ

記事を読む

logo

[C#]AS400をDBに見立ててPCのPGMからODBC接続する

◆前提条件◆ PCにClient Accessがインストールされている。 PCに.NET Fra

記事を読む

ad

Message

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

ad

  •  Auther;わなび

     「オープン系得意だよね? 俺のPCの調子悪いんだけど」という無茶振りから解き放たれゲームエンジニアに。
    C#とかUnityを扱います。
    Twitterフォロー大歓迎です。
    githubアカウント→wannabenote
  • follow us in feedly
PAGE TOP ↑