• 0
ahmed.o.mohamed

mini calc + jeu du devin

سؤال

السلام عليكم و رحمة الله وبركاته

سبق و أن كتبت بعض البرامج بهدف المراجعة "التطبيقية" للمبتدئين و هذه الطريقة (حسب وجهة نظري) تختزل الكثير من الوقت و تختصر الطريق أكثر بالإضافة إلى أنها تثري مستواه البرمجي لأنه سيستفيد العديد من الفكر من خلال تتبعه لهذه البرامج, لذلك أحببت أن أضع بعض برامجي هنا بغرض الإستفادة.

بداية سأضع برنامجين فقط, البرنامج الأول كتبته بلغة السي في حوالي 200 سطر برمجي أما الثاني فقد كتبته بالسي++ في حوالي 500 سطر.

البرنامج الأو عبارة عن Jeu du devin أو لعبة "الكاهن" إن صح التعبير, أما البرنامج الثاني فهو عبارة عن آلة حاسبة صغيرة مع إمكانية تحويل عدد من النظام العشري إلى النظام الثنائي و العكس.

نأتي الآن إلى تفاصيل البرنامج الأول:

اللعبة ببساطة تعتمد على توليد عدد عشوائي يقع في أحد المجالات المذكورة في واجهة البرنامج حيث توجد 5 مستوبات, كل مستوى يُحدد بمجال من الأعداد و كل ما كبر المجال كلما زادت صعوبة البحث عن العدد العشوائي (و هنا بيت القصيد), على المستخدم اختيار أحد المجالات عن طريق الرقم الذي يمثله, بعد أن يختار المستخدم المجال الذي يريده سيتم توليد عدد عشوائي يقع في المجال المُختار و على المستخدم إيجاد ذلك العدد في 5 محاولات فقط و إذا لم يفلح فسيظهر البرنامج العدد الذي كنت تبحث عنه بالإضافة إلى قائمة بمحاولاتك. في كل مرة تُخظئ في تكهن العدد سيساعدك البرنامج بإحد الجملتين : plus bas أو plus haut, الأولى تعني أن العدد المُدخل أكبر من العدد العشوائي و الثانية تعني أن العدد المُدخل أكبر من العدد العشوائي و هذا ما يساعدك في تقليص مجال البحث بهدف الحصول على العدد المُختار.

حان دور البرنامج الثاني :

البرنامج الثاني يحاكي آلة حاسبة بسيطة + إمكانية تحويل عدد ثنائي إلى عشري و العكس.

ملاحظة : توجد دوال خاصة بالتحقق من المُدخلات في كلا البرنامجين, مما يعني أنه لن يتم قبول أي مُدخلات لا توافق النوع المطلوب.

هذا ملف .cpp للبرنامج الأول:

#include "jeu du devin.h"

int main()
{
chargement();
debut:
int i=0,j,secret=0,entre,nc = 0,val_max,nbDeVies = 5,devin[5];
char choix,string[20];;

Menu();

choix=getch();
while(choix!='1' && choix!='2' && choix!='3' && choix!='4' && choix!='5')
{
putchar('\a');
choix=getch();
}
putchar(choix);
putchar('\n');
switch (choix)
{
case '1':
{
val_max = 10;
srand(time(NULL));
secret = rand() % 10;
};break;
case '2':
{
val_max = 80;
srand(time(NULL));
secret = rand() % 80;
};break;
case '3':
{
val_max = 200;
srand(time(NULL));
secret = rand() % 200;
};break;
case '4':
{
val_max = 600;
srand(time(NULL));
secret = rand() % 600;
};break;
case '5':
{
val_max = 1000;
srand(time(NULL));
secret = rand() % 1000;
};break;
}

Color (9);

do
{
printf("\ndeviner le nombre :");
gets(string);
while(!isNumber(string) || atoi(string) < 0 || atoi(string) > val_max)
{
printf("Erreur de saisie - Recommencez ! :\a");
gets(string);
}
entre = atoi(string);
printf("%d",entre);
devin[i++]=entre;
nc++;
if (entre < secret)
{
printf(" plus haut\n\n\n");
printf("il vous reste %d chance(s)\n", --nbDeVies);
}

if (entre > secret)
{
printf(" plus bas\n\n\n");
printf("il vous reste %d chance(s)\n", --nbDeVies);
}

if (entre == secret)
{
Color (12);
printf("\n\n\nfelicitations ! vous avez gagné en %d essai(s) \n",nc);
}

if (nbDeVies == 0)
{
printf("vous avez perdu !\n");
printf("le nombre choisi était %d",secret);
}

} while (entre != secret && nbDeVies > 0 );

Color(14);
printf("\n\n\n\t\t ----- Récapitulation des essai(s) -----\n");
for(j=0;j<nc;j++)
{
printf("%d ",devin[j]);
if(devin[j] < secret)
printf("plus haut\n");
else
if(devin[j] > secret)
printf("plus bas\n");
else
printf("exact\n");
}

Color (13);
printf("\n\n\n");
system("pause");
system ("cls");

printf("Voulez-vous quitter le programme ?\n");
printf("pour reprendre appuyez sur r, pour quitter appuyez sur q :\n");
choix=getch();
while(choix!='R' && choix!='r' && choix!='Q' && choix!='q')
{
putchar('\a');
choix=getch();
}

if(choix == 'R' || choix =='r')
{
system("cls");
goto debut;
}

if (choix == 'Q' || choix =='q') system("exit");

return 0;
}

و هذه دوال البرنامج على هيئة الـ prototype :

#include<time.h>
#include<conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

#define New_lines printf("\n\n\n\n\n\n\n\n\n\n");

void Color(int couleurDuTexte);
void chargement();
void Menu();
bool isNumber(char* str);

هذا ملف .cpp للبرنامج الثاني:

#include "Mini BibLo.h"

int main()
{
float *x,*y;
char choix,str_bin[30],str_dec[30];

GO();
debut:
ELM0uTe2ElI9();
Menu();
Getch(&choix,1);

switch(choix)
{
case '1':
{
Option();
Getch(&choix,2);

switch(choix)
{
case 'a':
case 'A':
{
Bin();
Getch(&choix,3);

color(11);
switch(choix)
{
case 'r':
case 'R':
{
cout<<endl<<"entrez un nombre en base 2 : ";
cin.getline(str_bin,29,'\n');
converter_binary_to_decimal(str_bin);
system("pause");
system("cls");
goto debut;
};break;

case 'd':
case 'D':
{
cout<<endl<<"entrez un nombre en base 10 : ";
cin.getline(str_dec,29,'\n');
converter_decimal_to_binary(str_dec);
system("pause");
system("cls");
goto debut;
}break;
}
}break;

case 'b':
case 'B':
{
menu();
Getch(&choix,4);
color(9);
cout<<endl<<"donnez le premier nombre : ";
x = Atof();
cout<<"donnez le deuxieme nombre : ";
y = Atof();
if(Div(y,&choix) == 0)
{
cout<<"une erreur s'est produite !\a"<<endl;
cout<<"la valeur du deuxieme nombre doit être différent de zéro."<<endl<<endl;
}
else
{
if(choix == 't' || choix == 'T')
choix_t(x,y);
else
cout<<endl<<*x<<" "<<choix<<" "<<*y<<" = "<<operation(*x,*y,choix)<<endl<<endl;
}
system("pause");
system("cls");
goto debut;
}break;
}
}break;

case '2':
{
about();
system("pause");
system("cls");
goto debut;
}break;

case '3': system("exit");break;
}
return 0;
}

و هذه دوال البرنامج على هيئة الـ prototype :

#include<conio.h>
#include<iostream>
#include<windows.h>
using namespace std;

#define New_lines cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl

void color(int nb);
void Fonc_Affiche(char *ptr);
void Text_colors();
void GO();
void ELM0uTe2ElI9();
void Menu();
bool Test(char opt);
bool TEst(char opt);
bool TESt(char opt);
bool TEST(char opt);
void Getch(char* ch,int nb);
void Bin();
void Option();
void menu();
bool is_float(const char* number_string);
float* Atof();
bool Div(float* F,char* OpT);
float operation(float a,float b,char opt);
void choix_t(float* a,float* b);
long puissance(int L,int k);
bool is_bin(char* str);
void converter_binary_to_decimal(char string_bin[30]);
bool is_dec(char* str);
void converter_decimal_to_binary(char string_dec[30]);
void about();

في المرفقات يوجد الملف التنفيذي للبرنامج الأول و كذلك البرنامج الثاني.

تحياتي العطرة.

prg.rar

تم تعديل بواسطه أحمد الشنقيطي
حذف روابط الصور المعطوبة !
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

2 إجابة على هذا السؤال .

  • 0

جميل جدا +1111111111111111

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

bonne continuation Mr c'est tres bien fait bravo

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .