C言語プログラミングコースの設計 - 読心術


序文

これは大学の C 言語プログラミングコースで設計した最初のプロジェクト ((●'◡'●)) ですが、今でもとてもうれしいです (笑)。このプロジェクトの作成は難しくなく、コードの量もそれほど多くありませんが、十分なスキルがあれば、どんな単純なものでも複雑にすることができます。

1. ゲームルール

マインドリーディングとは、その名前が示すように、あなたの心に何があるかを知ることができることを意味します。もちろん、これはそれほど魔法のようなものではありません。手放すことを考えていることをどうやって知ることができますか? ここでの心の読み取りは、単に私たちがだまされたということです。
具体的なルール: 0 から 7 までの数字を選択し、心の中で瞑想します。選択後、3 つの質問に答える必要があります。それぞれの答えに 1 または 0 を入力します。他の数字や文字を入力すると、再入力を求められます。 3つの質問に答えた後、頭の中で番号がわかり、オリジナルに基づいてユーザーログインシステムを追加しました。つまり、正しい口座番号とパスワードを入力するだけでログインできます。アカウント番号は正しく入力されていますが、パスワードが間違っている場合は、アカウント番号も再入力する必要があります。アカウントパスワードの入力を合計3回間違えるとアカウントに入力できなくなり、次回ゲームを起動するときに再入力する必要があります。

2. 原則

実は読心術の本質は基数変換の問題で、まず0から7までの8つの数字を10進数から2進数に変換しますが、一番大きな数字の7の2進数は111なので、2進数は3桁で十分です。足りない場合は0を記入してください。0:000、1:001、2:010、3:011、4:100、5:101、6:110、7:111。次に、これら 8 つの数値の 2 進数の下位ビットから上位ビットまでを調べて、どの数値が 1 と同じビットを持つかを確認します。つまり、最初の質問は 1、3、5、7、2 番目の質問は 3、5 になります。 、6、7、3問目は4、5、6、7です。そうすれば、質問に対する答えの 1 か 0 に基づいて、あなたの頭の中にある数字がわかります。つまり、この数字は私たちが計算したものです。

3. コード

#include <bits/stdc++.h>
using namespace std;
int main() 
{
    
    	
	int num[3][4] = {
    
    {
    
    1, 3, 5, 7}, {
    
    2, 3, 6, 7}, {
    
    4, 5, 6, 7}};
	int sum=0,t=1;
	printf("\t\t\t\t\t\t欢迎来到读心术游戏\t\n");
	string s="jiruan6ban";
	int password = 123456789;
	for(int i=1;i<=3;i++)
	{
    
    
		cout<<"请输入您的用户名:"<<endl;
		string username;
		cin>>username;
		int password1;
		if(username==s)
		{
    
    
			cout<<"用户名正确,请输入密码:"<<endl; 
			cin>>password1;
			if(password1==password)
			{
    
    
				cout<<"密码正确!登入成功!"<<endl<<endl;
				cout<<"接下来将进行读心术的游戏了哦!"<<endl;
				cout << "请从下面的数字(0~7)中选择一个默念在心中" << endl;
				cout << "0、1、2、3、4、5、6、7"<<endl;
				cout<<"心里有数了叭!接下来我只需要询问您三个问题就能知道您想的那个数是什么,怎么? 不信吗?那么咋们走着瞧吧哈哈"<<endl<<endl;
				for(int i=0;i<=2;i++)
				{
    
    
					printf("第%d个问题~下面的数字是否有你所想的:",i+1);
					for(int j=0;j<=3;j++)
					{
    
    
						cout<<num[i][j]<<" ";
						
					}
					char a ;
					cout<<"请输入1(有) 或 0(没有)"<<endl;
					while(1)
					{
    
    
						cin>>a;
						if(a!='0'&&a!='1')
						{
    
    
							printf("输入非法,请重新输入:\n");
							continue;
						}	
						else
							break;
					}
					if(a =='1')
					{
    
    
						sum+=t;
						t*=2;
					}
					else
						t*=2;
					
				}
				printf("见证奇迹的时刻到啦!你心里想的那个数字是 %d 吧嘿嘿\n",sum);
				return 0;
																																
			}
			else
			{
    
    
				cout<<"密码错误!"<<endl;
				continue; 
			}		 		 
		}
		else
		{
    
    
			cout<<"用户名错误!"<<endl;
			continue;
		}
			
	}
	cout<<"抱歉!您已输入错误三次,无法再次进行输入,为确保账号的安全,请在下次打开时进行尝试!"<<endl;	
	
}	

コードテスト:
ここに画像の説明を挿入
私が思っていたのは確かに 7、くそー、予想通りでした。私の言うことが信じられないなら、試してみてください!

要約する

一般に、読心プロジェクトであろうと他のプロジェクトであろうと、ルールがあります。ルールはユーザー指向であり、ユーザーが操作方法を理解するのに役立ちます。プロジェクトの原則により、コードを通じて実装する必要があります。コード自体は私たちが作成したものであるため、その原理は、コンピューターが理解して実行できるように、私たちがよく知っていることをコードに記述することと同じです。拡張とは、ゲームのプレイアビリティを向上させるために、オリジナルのベースに他の機能を追加することです。プログラム全体のフローチャートを描くと、このプロジェクトの枠組みが明確にわかるので、プログラムの特定の部分でバグが発生した場合でも、フローチャートに従って問題のある箇所を素早く見つけ、適切な対処を行うことができます。薬。コードを分析するプロセスにより、フレームワークの考え方が改善され、プロジェクトをより深く理解できるようになります。

おすすめ

転載: blog.csdn.net/H1727548/article/details/129431970