C言語で数字を当てる
どのようにC言語でデジタルゲームを書いたらいいですか?参考にしてください。具体的な内容は以下の通りです。
最初にヘッダを呼び出す
簡単に言えば、低レベル中級高級のコードロジックは同じです。stdlib.hのrand関数を使ってランダムな数値を抽出し、入力したgussと比較して、whileで実行し、入力して比較します。もし正確なtimes+1でサイクルを終了したら、正しくないなら、エラーを提示して、whileに戻って運行します。timesがその数値を超えるまで、サイクルを出します。
下で基本テンプレートを見てもいいです。(中の数値はピンインで代用します。)
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
最初にヘッダを呼び出す
/*** ***/
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
/*** ***/
追加定義関数
/** **/
void start();//
void low();//
void mediate();//
void high();//
void res();//
void chooce();//
void help();//
void name_set();//
int main(void);//
/** **/
start()関数は、主に選択入力されます。コードは以下の通りです。
void start(){//
printf("***************************
");
printf("* 1. *
");
printf("* 2. *
");
printf("* 3. *
");
printf("***************************
");
/* */
int c;
printf(" :");
scanf("%d",&c);
switch(c){
case 1:
chooce();
break;
case 2:
printf(" !
");
break;
exit(0);
case 3:
help();
break;
default:
printf(" :
");
break;
}
/* */
}
name_set関数は主に遊び人の名前を聞いてから名前を出力します。ゲームですから、娯楽に来ます。
void name_set(){//
char name[10];
printf(" , ? :");
gets(name);
printf("%s,
",name);
}
help()関数が純粋なのはヘルプを提示することです。
void help(){//
printf("\t1. 300 , 5
");
printf("\t2. 300-1000 , 10
");
printf("\t3. 1000 , 20
");
start();// ,
}
チョック関数は、主にゲームのレベルを選択します。
void chooce(){//
printf("***************************
");
printf("* 1. *
");
printf("* 2. *
");
printf("* 3. *
");
printf("***************************
");
int dj;
printf(" :");
scanf("%d",&dj);//
/* */
if(dj==1){
low();
}
else if(dj==2){
mediate();
}
else if(dj==3){
high();
}
else{
printf(" , !
");
chooce();
}
/* */
}
次は主な関数です。ゲームの内容とロジックです。簡単に言えば、低レベル中級高級のコードロジックは同じです。stdlib.hのrand関数を使ってランダムな数値を抽出し、入力したgussと比較して、whileで実行し、入力して比較します。もし正確なtimes+1でサイクルを終了したら、正しくないなら、エラーを提示して、whileに戻って運行します。timesがその数値を超えるまで、サイクルを出します。
下で基本テンプレートを見てもいいです。(中の数値はピンインで代用します。)
void dengji(){
int sb;
srand(time(NULL));// rand
printf(" :");
scanf("%d",&sb);//
if(// ){
printf(" !
");
printf("
");
low();
}
int num=rand() % ("%d"+1,sb);//
int times=0;//
while(times<n){//
int guess;
printf(" :");//
scanf("%d",&guess);
times+=1;//
/*** ***/
if(guess==num){
break;//
}
else if(guess>num){
printf(" !
");
}
else{
printf(" !
");
}
/*** ***/
}
if(times<n){
printf(" !
");//
printf(" %d ",times);
}
else{
printf(" , ! %d。
",num);
printf(" %d
",times);//
}
}
コードを見てもいいです。
void low(){//
int sb;
srand(time(NULL));// rand
printf(" :");
scanf("%d",&sb);//
if(sb>300){
printf(" !
");
printf("
");
low();
}
int num=rand() % ("%d"+1,sb);//
int times=0;//
while(times<5){//
int guess;
printf(" :");//
scanf("%d",&guess);
times+=1;//
/*** ***/
if(guess==num){
break;//
}
else if(guess>num){
printf(" !
");
}
else{
printf(" !
");
}
/*** ***/
}
if(times<5){
printf(" !
");//
printf(" %d ",times);
}
else{
printf(" , ! %d。
",num);
printf(" %d
",times);//
}
}
void mediate(){//
int sb;
srand(time(NULL));// rand
printf(" :");
scanf("%d",&sb);//
if(sb<300){
printf(" !
");
printf("
");
mediate();
}
else if(sb>1000){
printf(" !
");
printf("
");
mediate();
}
int num=rand() % ("%d"+1,sb);//
int times=0;//
while(times<10){//
int guess;
printf(" :");//
scanf("%d",&guess);
times+=1;//
/*** ***/
if(guess==num){
break;//
}
else if(guess>num){
printf(" !
");
}
else{
printf(" !
");
}
/*** ***/
}
if(times<10){
printf(" !
");//
printf(" %d ",times);
}
else{
printf(" , ! %d。
",num);
printf(" %d
",times);//
}
}
void high(){//
int sb;
srand(time(NULL));// rand
printf(" :");
scanf("%d",&sb);//
if(sb<1000){
printf(" , !
");
high();
}
int num=rand() % ("%d"+1,sb);//
int times=0;//
while(times<20){//
int guess;
printf(" :");//
scanf("%d",&guess);
times+=1;//
/*** ***/
if(guess==num){
break;//
}
else if(guess>num){
printf(" !
");
}
else{
printf(" !
");
}
/*** ***/
}
if(times<20){
printf(" !
");//
printf(" %d ",times);
}
else{
printf(" , ! %d。
",num);
printf(" %d
",times);//
}
}
レスス関数はゲームを返すための質問として理解できますが、私はreturn gamesに基づいて略語しました。結局ゲームは一回だけではなく、中で論理演算をして、他の関数に戻ります。
void res(){//
printf("
?
1. 2. 。");
int s;
scanf("%d",&s);
/* */
if(s==1){
chooce();
}
else if(s==2){
printf(" !
");
exit(0);//
}
else{
printf(" !
");
res();
}
/* */
return res();// res main
}
メイン関数は主に呼び出しをして前のstartを呼び出します。set,choce,resなどの関数
int main(){
name_set();//
start();//
int yes=1;// , res
if(yes==1){
res();
}
}
最後までコードを全部見てもいいです。
/*** ***/
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
/*** ***/
/** **/
void start();//
void low();//
void mediate();//
void high();//
void res();//
void chooce();//
void help();//
void name_set();//
int main(void);//
/** **/
void start(){//
printf("***************************
");
printf("* 1. *
");
printf("* 2. *
");
printf("* 3. *
");
printf("***************************
");
/* */
int c;
printf(" :");
scanf("%d",&c);
switch(c){
case 1:
chooce();
break;
case 2:
printf(" !
");
break;
exit(0);
case 3:
help();
break;
default:
printf(" :
");
break;
}
/* */
}
void name_set(){//
char name[10];
printf(" , ? :");
gets(name);
printf("%s,
",name);
}
void help(){//
printf("\t1. 300 , 5
");
printf("\t2. 300-1000 , 10
");
printf("\t3. 1000 , 20
");
start();// ,
}
void chooce(){//
printf("***************************
");
printf("* 1. *
");
printf("* 2. *
");
printf("* 3. *
");
printf("***************************
");
int dj;
printf(" :");
scanf("%d",&dj);//
/* */
if(dj==1){
low();
}
else if(dj==2){
mediate();
}
else if(dj==3){
high();
}
else{
printf(" , !
");
chooce();
}
/* */
}
void low(){//
int sb;
srand(time(NULL));// rand
printf(" :");
scanf("%d",&sb);//
if(sb>300){
printf(" !
");
printf("
");
low();
}
int num=rand() % ("%d"+1,sb);//
int times=0;//
while(times<5){//
int guess;
printf(" :");//
scanf("%d",&guess);
times+=1;//
/*** ***/
if(guess==num){
break;//
}
else if(guess>num){
printf(" !
");
}
else{
printf(" !
");
}
/*** ***/
}
if(times<5){
printf(" !
");//
printf(" %d ",times);
}
else{
printf(" , ! %d。
",num);
printf(" %d
",times);//
}
}
void mediate(){//
int sb;
srand(time(NULL));// rand
printf(" :");
scanf("%d",&sb);//
if(sb<300){
printf(" !
");
printf("
");
mediate();
}
else if(sb>1000){
printf(" !
");
printf("
");
mediate();
}
int num=rand() % ("%d"+1,sb);//
int times=0;//
while(times<10){//
int guess;
printf(" :");//
scanf("%d",&guess);
times+=1;//
/*** ***/
if(guess==num){
break;//
}
else if(guess>num){
printf(" !
");
}
else{
printf(" !
");
}
/*** ***/
}
if(times<10){
printf(" !
");//
printf(" %d ",times);
}
else{
printf(" , ! %d。
",num);
printf(" %d
",times);//
}
}
void high(){//
int sb;
srand(time(NULL));// rand
printf(" :");
scanf("%d",&sb);//
if(sb<1000){
printf(" , !
");
high();
}
int num=rand() % ("%d"+1,sb);//
int times=0;//
while(times<20){//
int guess;
printf(" :");//
scanf("%d",&guess);
times+=1;//
/*** ***/
if(guess==num){
break;//
}
else if(guess>num){
printf(" !
");
}
else{
printf(" !
");
}
/*** ***/
}
if(times<20){
printf(" !
");//
printf(" %d ",times);
}
else{
printf(" , ! %d。
",num);
printf(" %d
",times);//
}
}
void res(){//
printf("
?
1. 2. 。");
int s;
scanf("%d",&s);
/* */
if(s==1){
chooce();
}
else if(s==2){
printf(" !
");
exit(0);//
}
else{
printf(" !
");
res();
}
/* */
return res();// res main
}
int main(){
name_set();//
start();//
int yes=1;// , res
if(yes==1){
res();
}
}
ここでは関数の順番が乱れます。前では関数を宣言したので、関数の順番は必要ありません。声明しないと、使いたい関数を見つけにくいです。以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。