سلام!
در برنامه هاي كنسولي چطور ميشه برنامه رو
1. fullscreen كرد؟
2. فارسي كرد؟
3. رنگ text و background رو عوض كرد؟
4. عكس رو نشون داد؟
تشكر
Printable View
سلام!
در برنامه هاي كنسولي چطور ميشه برنامه رو
1. fullscreen كرد؟
2. فارسي كرد؟
3. رنگ text و background رو عوض كرد؟
4. عكس رو نشون داد؟
تشكر
سوالتونو واضح تر بگبيد ممنون ميشم
1. برنامه هاي تحت داس رو بطور Fullscreen اجرا كنم.
2. در برنامه هاي تحت داس بتونم از فونت فارسي استفاده كنم.
3. در برنامه هاي تحت داس رنگ زمينه و متن (هر قسمتي از متن رو كه خواستم) رو تغيير بدم.
4. در برنامه هاي تحت داس بتونم يك عكس (با هر فرمتي) رو در صفحه ي داس (هر قسمتي) نشون بدم.
5. فونت متن برنامه در داس رو تغيير بدم.
برای فول اسکرین کردنشون که از کلید alt+enter استفاده کن
برای تغییر فون و بک گروند و .... باید روی گوشه بالا سمت چپ کلیک کنی و منویی که باز میشه رو بری تو properties و سپس اونجا تغییراتت رو اعمال کنی.
در ضمن می تونی با دستور داس color این کار رو انجام بدی. توی cmd این رو بزن:
کد:color -help
ببخشيد منظورم در برنامه نويسي بود ؟
اون موارد رو ميخوام در برنامم به كار بگيرم.
خوب چرا گرافیکی نمی نویسی؟!
background رو میشه با استفاده از همون دستور color تغییر داد. اینجوری که اون رو تو تابع سیستم صدا زد:
فارسی رو هم باید بیخیالش بشی!کد:system("color ***");
برای نشون دادن عکس ه مباید فایل عکس رو باز کنی و سپس یکی یکی پیکسل ها رو رنگ کنی! تازه، بعید می دونم توی ویندوز بشه توابع گرافیکی داس رو اجرا کرد.
البته توی command prompt لینوکس کتابخونه هایی برای کار گرافیکی وجود داره (مثل ساختن منو و ...).
دوست عزیز اگر بخوای رنگ پس زمینه و خود متن رو با کد تو c++ تغییر بدی باید از کد زیر استفاده کنی :
بعد هر جا که خواستی رنگ متن تو کنسول تغییر کنه از کد زیر استفاده کن :کد:HANDLE hOut;
hOut = GetStdHandle (STD_OUTPUT_HANDLE);
مثلا اگر بخواهی رنگ متن قرمز بشه تو قسمت تغییرات مربوط به رنگ عبارت FOREGROUND_RED رو وارد می کنی.کد:SetConsoleTextAttribute(hOut,تغییرات مربوط به رنگ);
اگر بخواهی رنگی به غیر از سه رنگ اصلی داشته باشی باید از ترکیبات رنگ استفاده کنی مثلا برای رنگی که از ترکیب سبز و آبی بوجود میاد باید از کد FOREGROUND_GREEN || FOREGROUND_BLUE باید تو تغییرات رنگ استفاده کنی. علاوه بر این می تونی روشنی متن رو هم تغییر بدی با عبارت FOREGROUND_INTENSITY رنگ روشن تر میشه و در ضمن برای تغییر رنگ بک گراند متن ار BACK به جای FORE استفاده کن.
برنامه پایین یه مثال رو از کد های بالا نشون میده که قبلا هم تو فروم گذاشته بودم :
اینم محتوای سرفایل Borders.h :کد:#include <iostream>
#include <string.h>
#include <fstream>
#include <conio.h>
#include <windows.h>
#include "Borders.h"
using namespace std;
const int NameSize=40;
char Name[NameSize];
string FirstName;
string LastName;
string Telephone;
string Mobile;
string Address;
string FirstName2;
string LastName2;
string Telephone2;
string Mobile2;
string Address2;
void QuestionForm (int);
void SaveDataBase();
void ImportDataBase(char DBName[]);
void AboutDisplayMassage();
void gotoxy(int x,int y)
{
COORD pos;
HANDLE hConsole = GetStdHandle ( STD_OUTPUT_HANDLE );
if (INVALID_HANDLE_VALUE != hConsole)
{
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition( hConsole, pos );
}
}
int main () {
int ResumeProgram=true;
while (ResumeProgram) {
SetConsoleTitle("Phone Book Classic");
int answer;
HANDLE hOut;
hOut = GetStdHandle (STD_OUTPUT_HANDLE);
system("cls");
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
cout<<"\n\n\n\n\n\n";
cout<<" ____________________________ "<<endl;
cout<<" | |"<<endl;
cout<<" | ++ Welcome ++ |"<<endl;
cout<<" | |"<<endl;
cout<<" | ++ Select a modify ++ |"<<endl;
cout<<" | |"<<endl;
cout<<" | 1.Enter Data |"<<endl;
cout<<" | |"<<endl;
cout<<" | 2.Import Data |"<<endl;
cout<<" | |"<<endl;
cout<<" | 3.About |"<<endl;
cout<<" | |"<<endl;
cout<<" | 4.Quit |"<<endl;
cout<<" |____________________________|"<<endl;
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
cout<<"\n\n Answer :";
At (39,22,(unsigned char)186);
At (41,22,(unsigned char)186);
At (40,21,(unsigned char)205);
At (40,23,(unsigned char)205);
At (41,21,(unsigned char)187);
At (41,23,(unsigned char)188);
At (39,21,(unsigned char)201);
At (39,23,(unsigned char)200);
gotoxy(40,22);
SetConsoleTextAttribute(hOut,FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
cin>>answer;
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE);
switch (answer) {
case 1 :
QuestionForm(1);
break;
case 2 :
QuestionForm(2);
break;
case 3 :
AboutDisplayMassage();
break;
case 4 :
ResumeProgram=false;
break;
default :
break;}}
return 0;}
void QuestionForm (int modify){
HANDLE hOut;
hOut = GetStdHandle (STD_OUTPUT_HANDLE);
if (modify==1){
SetConsoleTitle("Phone Book Classic > Save Data");
system("cls");
cout<<"\n\n\n\n\n\n";
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
cout<<" Enter DataBase Name : ";
cin>>Name;
system("cls");
cout<<"\n";
cout<<"\n First Name : ";
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY);
At(18,2,(unsigned char)179);
At(50,2,(unsigned char)179);
At(18,1,(unsigned char)218);
At(50,1,(unsigned char)191);
At(18,3,(unsigned char)192);
At(50,3,(unsigned char)217);
for (int body=19;body<=49;body++) {
At(body,1,(unsigned char)196);}
for (int bottom=19;bottom<=49;bottom++) {
At(bottom,3,(unsigned char)196);}
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
cout<<"\n\n Last Name : ";
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY);
At(18,5,(unsigned char)179);
At(50,5,(unsigned char)179);
At(18,4,(unsigned char)218);
At(50,4,(unsigned char)191);
At(18,6,(unsigned char)192);
At(50,6,(unsigned char)217);
for (int body2=19;body2<=49;body2++) {
At(body2,4,(unsigned char)196);}
for (int bottom2=19;bottom2<=49;bottom2++) {
At(bottom2,6,(unsigned char)196);}
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
cout<<"\n\nTelephone Number : ";
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY);
At(18,8,(unsigned char)179);
At(50,8,(unsigned char)179);
At(18,7,(unsigned char)218);
At(50,7,(unsigned char)191);
At(18,9,(unsigned char)192);
At(50,9,(unsigned char)217);
for (int body3=19;body3<=49;body3++) {
At(body3,7,(unsigned char)196);}
for (int bottom3=19;bottom3<=49;bottom3++) {
At(bottom3,9,(unsigned char)196);}
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
cout<<"\n\n Moblie Number : ";
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY);
At(18,11,(unsigned char)179);
At(50,11,(unsigned char)179);
At(18,10,(unsigned char)218);
At(50,10,(unsigned char)191);
At(18,12,(unsigned char)192);
At(50,12,(unsigned char)217);
for (int body4=19;body4<=49;body4++) {
At(body4,10,(unsigned char)196);}
for (int bottom4=19;bottom4<=49;bottom4++) {
At(bottom4,12,(unsigned char)196);}
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
cout<<"\n\n Address : ";
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY);
At(18,14,(unsigned char)179);
At(50,14,(unsigned char)179);
At(18,13,(unsigned char)218);
At(50,13,(unsigned char)191);
At(18,15,(unsigned char)192);
At(50,15,(unsigned char)217);
for (int body5=19;body5<=49;body5++) {
At(body5,13,(unsigned char)196);}
for (int bottom5=19;bottom5<=49;bottom5++) {
At(bottom5,15,(unsigned char)196);}
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
cin.sync();
gotoxy(19,2);
getline(cin,FirstName2);
gotoxy(19,5);
getline(cin,LastName2);
gotoxy(19,8);
getline(cin,Telephone2);
gotoxy(19,11);
getline(cin,Mobile2);
gotoxy(19,14);
getline(cin,Address2);
FirstName=" FirstName : "+FirstName2;
LastName= " LastName : "+LastName2;
Telephone=" Telephone Number : "+Telephone2;
Mobile= " Mobile Number : "+Mobile2;
Address= " Address : "+Address2;
SaveDataBase();}
else {
SetConsoleTitle("Phone Book Classic > Load Data");
system("cls");
cout<<"\n\n\n\n\n\n";
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
cout<<" Enter DataBase Name : ";
cin>>Name;
system("cls");
ImportDataBase(Name);}
}
void SaveDataBase(){
ofstream DB;
DB.open(Name);
DB<<FirstName<<"\n\n"<<LastName<<"\n\n"<<Telephone<<"\n\n"<<Mobile<<"\n\n"<<Address;
DB.close();
cout<<"\n\nThe Datas has been saved !...";
getch();}
void ImportDataBase(char DBName[]){
HANDLE hOut;
hOut = GetStdHandle (STD_OUTPUT_HANDLE);
string Buffer;
ifstream myDB (DBName);
if (myDB.is_open())
{
while (! myDB.eof() )
{
getline (myDB,Buffer);
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_INTENSITY);
cout << Buffer<<endl;
}
myDB.close();
}
else cout << "Unable to open file";
getch();}
void AboutDisplayMassage() {
SetConsoleTitle("Phone Book Classic > About");
system("cls");
cout<<"\n\n\n\n";
cout<<" ____________________________ "<<endl;
cout<<" | |"<<endl;
cout<<" | This Program |"<<endl;
cout<<" | |"<<endl;
cout<<" | Writed by C++ in |"<<endl;
cout<<" | |"<<endl;
cout<<" | Agust 2008 - 1387 H.SH |"<<endl;
cout<<" | |"<<endl;
cout<<" | If you find a bug in this |"<<endl;
cout<<" | Call with this E-Mail : |"<<endl;
cout<<" | Hosein1986@Hotmail.com |"<<endl;
cout<<" |____________________________|"<<endl;
getch();}
اگه به دستورات کد های بالا دقت کنی میتونی چیز های جالبی یاد بگیری.کد:#include <windows.h>
#include <iostream>
using namespace std;
void At(int x, int y, unsigned char What)
{
static HANDLE hOut;
static bool First = TRUE;
COORD Position;
if(First)
{
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
First = FALSE;
}
Position.X = x;
Position.Y = y;
SetConsoleCursorPosition(hOut,
Position);
cout << What << flush;
}
- اول برنامه كاري كن كه كاربر فقط اعداد 1 و 2 و 3 و 4 رو بتونه وارد كنه!
در ضمن چطور خودكار fullscreen اجرا بشه؟
فکر نکنم با کد فول اسکرین بشه.
منظور شما چیه؟نقل قول:
- اول برنامه كاري كن كه كاربر فقط اعداد 1 و 2 و 3 و 4 رو بتونه وارد كنه!
ویرایش شد
بله درسته در صورتی که مقدار دیگه ای وارد بشه برنامه هنگ میکنه (رشته و ...)