Aby jeszcze lepiej przyswoić sobie zdobyte umiejętności w trakcie trwania kursu przyjrzyjmy się kilku prostym programom.
Przyswojenie wiadomości
Prosta gierka konsolowa, której celem jest odgadnięcie jaką liczbę wylosował komputer.
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
int losowa = (rand() % 50)+1; //losujemy
int wprowadzona;
cout<<"Program 'zgaduj-zgadula' v0.1 by Komeniusz"<<endl;
while(wprowadzona != losowa) { //dopóki nie odgadniemy
cout<<"Zgadnij jaką liczbę wylosowałem (1;50): ";
cin>>wprowadzona;
if(isdigit(wprowadzona)) { //zabezpieczenie
cout<<"Wprowadzone dane nie są liczbą!"<<endl;
return 0;
}
if(wprowadzona > losowa) { //jesli za duza
cout<<"Podana liczba jest za duża"<<endl;
} else if(wprowadzona < losowa) { //jesli za mala
cout<<"Podana liczba jest za mała"<<endl;
}
}
cout<<"Moje gratulacje! Tajemnicza liczba to "<<losowa<<endl;
return 0; //koniec 🙂
}
Program wypisujący podaną przez użytkownika wartość od tyłu.
#include <iostream>
using namespace std;
int main() {
string slowo;
cout<<"Wpisz słowo: ";
cin>>slowo;
for(int i=slowo.length()+1; i>-1; --i) {
cout<<slowo[i];
}
cout<<endl;
return 0;
}
Prosty kalkulator z menu wyboru, nie mogło go zabraknąć 🙂
#include <iostream>
using namespace std;
//zmienne globalne - dostępne w każdej funkcji
int pierwsza;
int druga;
void dodawanie() {
cout<<"Wpisz pierwszą liczbę: ";
cin>>pierwsza;
cout<<"Wpisz drugą liczbę: ";
cin>>druga;
cout<<"Wynik to: ";
cout<<pierwsza+druga<<endl;
}
void odejmowanie() {
cout<<"Wpisz pierwszą liczbę: ";
cin>>pierwsza;
cout<<"Wpisz drugą liczbę: ";
cin>>druga;
cout<<"Wynik to: ";
cout<<pierwsza-druga<<endl;
}
void dzielenie() {
cout<<"Wpisz pierwszą liczbę: ";
cin>>pierwsza;
cout<<"Wpisz drugą liczbę: ";
cin>>druga;
cout<<"Wynik to: ";
cout<<pierwsza/druga<<endl;
}
void mnozenie() {
cout<<"Wpisz pierwszą liczbę: ";
cin>>pierwsza;
cout<<"Wpisz drugą liczbę: ";
cin>>druga;
cout<<"Wynik to: ";
cout<<pierwsza*druga<<endl;
}
int main() {
int menu;
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
cout<<"| Kalkulator v0.1 by Komeniusz |"<<endl;
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
while(1) {
cout<<endl;
cout<<"1 - dodawanie"<<endl;
cout<<"2 - odejmowanie"<<endl;
cout<<"3 - dzielenie"<<endl;
cout<<"4 - mnożenie"<<endl;
cout<<"0 - exit"<<endl;
cout<<"Wybierz działanie: ";
cin>>menu;
switch(menu) {
case 1:
dodawanie();
break;
case 2:
odejmowanie();
break;
case 3:
dzielenie();
break;
case 4:
mnozenie();
break;
case 0:
cout<<"Do widzenia :-)"<<endl;
return 0;
break;
default:
cout<<"Nieprawidłowy wybór"<<endl;
return 0;
}
}
}
Gra OrcRider v0.2. Tą prostą grę konsolową pisałem na początku mojej zabawy z C++. Mimo, iż kod nie jest napisany zbyt profesjonalnie to można sobie pograć i nieźle się zabawić. Wersja v0.4 uległa niestety zniszczeniu, więc wiele elementów, które wprowadziłem, aby ulepszyć grę po prostu nie istnieje, a naprawdę były to niezłe ulepszenia 🙂
#include <iostream>
#include <cstdlib>
using namespace std;
char chceszzagrac;
char coteraz;
int zycie = 100;
int orc = 50;
int silaorca = 0;
int zloto = 20;
int walka = 0;
/*Zmienne w programie*/
int main();
int zajeborca();
int pub();
int atak();
int krecha();
int dane();
int krecha() {
cout<<"|---------------------------------------------------------------------------------"<<endl;
}
int dane() {
krecha();
cout<<"|Twoje punkty zyciowe: "<<zycie<<endl;
cout<<"|Twoje zloto: "<<zloto<<endl;
krecha();
}
int atak() {
while (walka == 1) {
int atak = 1 + (int)(rand() / (RAND_MAX + 1.0) * 11 - 1);
int atakorca = 1 + (int)(rand() / (RAND_MAX + 1.0) * 11 - 1);
krecha();
cout<<"Orc zostal trafiony! Twoj cios odebral mu "<<atak<<"pkt zycia"<<endl;
cout<<"Bestia nie pozostaje Ci dluzna, kontratakuje w wyniku czego tracisz "<<atakorca<<"pkt zycia"<<endl;
zycie -= atakorca;
orc -= atak;
krecha();
if (orc <= 0) {
krecha();
cout<<"Zabiles Orca!"<<endl;
int ilezlota = 20 + (int)(rand() / (RAND_MAX + 1.0) * 50);
cout<<"W nagrode otrzymujesz "<<ilezlota<<"gc"<<endl;
zloto += ilezlota;
krecha();
dane();
silaorca += 20;
orc = 50 + silaorca;
walka = 0;
zajeborca();
} else if (zycie <= 0) {
cout<<"Przegrales - Orc odniosl zwyciestwo, a Ty uciekasz do pubu - tracisz polowe zlota, a Twoj stan zycia spada do 20 ;("<<endl;
walka = 0;
zycie = 20;
zloto /= zloto;
pub();
}
else {
cout<<"Twoj aktualny stan zdrowia: "<<zycie<<endl;
cout<<"Stan zdrowia Orca: "<<orc<<endl;
cout<<"Chcesz mu jebnac jeszcze raz? (t/n)(t=tak, chce! || n=nie, spadam stad!)"<<endl;
cin>>coteraz;
if (coteraz == 't') {
walka = 1;
} else if (coteraz == 'n') {
cout<<"Uciekasz, Orc smieje sie z Ciebie - Twoj honor jest zhanbiony!"<<endl;
cout<<"Tracisz polowe swoich pkt zycia i polowe swojego zlota"<<endl;
zycie /= zycie;
zloto /= zloto;
dane();
pub();
} else {
cout<<"Niepoprawne polecenie!"<<endl<<endl;
walka = 1;
}
}
}
}
int pub() {
dane();
cout<<"Jestes w pubie, co chcesz zrobic? (o/n/z/p)(o=odpoczac || n=napic sie piwka || z=zjesc obiad || p=powrot na droge)"<<endl;
cin>>coteraz;
if (coteraz == 'o') {
cout<<"Odpoczynek zregeneruje 5pkt zycia, ale zajmie minute - chcesz kontynuowac? (t/n)(t=tak || n=nie)"<<endl;
cin>>coteraz;
if (coteraz == 't') {
sleep(1000);
zycie += 5;
cout<<"jebane Orci czekaja..."<<endl;
pub();
} else if (coteraz == 'n') {
pub();
} else {
cout<<"Niepoprawne polecenie!"<<endl<<endl;
pub();
}
} else if (coteraz == 'n') {
cout<<"Piwo zregeneruje 10pkt zycia, ale kosztuje 20gc - chcesz kontynuowac? (t/n)(t=tak || n=nie)"<<endl;
cin>>coteraz;
if (coteraz == 't') {
if (zloto >= 20) {
zloto -= 20;
zycie += 10;
pub();
} else {
cout<<"Przykro mi, dzisiaj nic nie wypijesz - masz "<<zloto<<"gc"<<endl;
pub();
}
} else if (coteraz =='n') {
pub();
} else {
cout<<"Niepoprawne polecenie!"<<endl<<endl;
pub();
}
} else if (coteraz == 'z') {
cout<<"Obiad kosztuje 30gc, regeneruje 20pkt zycia - kontynuowac? (t/n)(t=tak || n=nie)"<<endl;
cin>>coteraz;
if (coteraz == 't') {
if (zloto >= 30) {
zloto -= 30;
zycie += 20;
pub();
} else {
cout<<"Przykro mi, dzisiaj nic nie zjesz - masz "<<zloto<<"gc"<<endl;
pub();
}
} else if (coteraz == 'n') {
pub();
} else {
cout<<"Niepoprawne polecenie!"<<endl<<endl;
pub();
}
} else if (coteraz == 'p') {
main();
} else {
cout<<"Niepoprawne polecenie!"<<endl<<endl;
pub();
}
}
int zajeborca() {
cout<<"Na Twojej drodze stoi Orc"<<endl;
cout<<"Po uwaznej obserwacji stwierdzasz, ze ma on "<<orc<<"punktow zycia"<<endl;
cout<<"Co chcesz zrobic? (a/u/p)(a=atak || u=ucieczka || p=powrot do pubu)";
cin>>coteraz;
if (coteraz == 'a') {
walka = 1;
atak();
} else if (coteraz == 'u') {
cout<<"Mezny woj nigdy nie ucieka!"<<endl;
cout<<"Zhanbiles swoj honor!"<<endl;
cout<<"GAME OVER!"<<endl;
return 0;
} else if (coteraz == 'p') {
pub();
} else {
cout<<"Niepoprawne polecenie!"<<endl<<endl;
zajeborca();
}
}
int gra() {
zajeborca();
}
int main() {
cout<<"Gra 'Orc Rider v0.2' autorstwa komeniusz'a - chcesz zagrac? (t/n)";
cin>>chceszzagrac;
if (chceszzagrac == 't') {
krecha();
cout<<"|Jestes meznym wojem o imieniu Tuck------------------------------------------------"<<endl;
cout<<"|Zle Orci napadly na Twoja wioske, kiedy Ty zabawiales sie w pubie------------------"<<endl;
cout<<"|Zniszczyly wszystko, a na dodatek porwaly Twoja zone!-------------------------------"<<endl;
cout<<"|Twoim zadaniem jest ocalenie zony i innych dziewic z wioski z rak okrutnych bestii!--"<<endl;
krecha();
dane();
gra();
} else if (chceszzagrac == 'n') {
cout<<"To po chuj wlaczasz gre w, ktora nie chcesz grac?"<<endl;
return 0;
} else {
cout<<"Niepoprawne polecenie!"<<endl;
main();
}
}
Źródła
W trakcie pisania kursu korzystałem z strony 4 programmers, na której można znaleźć wiele ciekawych informacji.
Czytelnik chcący pogłębić swoją wiedzę z zakresu C++ powinien przeczytać Megatutorial “Od zera do gier kodera” Xion’a dostępny tutaj.
28 grudnia 2011 dnia 13:17
OrcRider wymiata! 😉