Column Posted October 31, 2015 Report Share Posted October 31, 2015 Stiu ca sunt tineri programatori ce isi doresc sa-si faca propriul joc si de aceea m-am gandit sa le ofer o sursa de inspiratie.#include <iostream>#include <windows.h>#include <ctime>using namespace std;char GameOver[50][50] = {"-------------------------", "- -", "- GAME OVER -", "- -", "-1)Apasati ESC(ExitGame)-", "-2)Apasati F1(Repetare) -", "-------------------------"};char GameWinner[50][50] = {"@@@@@@@@@@@@@@@@@@@@@@@", "@ @", "@ @", "@ Win this Game @", "@ @", "@ F1 - Repeat @", "@@@@@@@@@@@@@@@@@@@@@@@"};char map[50][50] = {"################", "# #", "# #", "# @ #", "# #", "#* #", "################"};int game_speed = 90;bool pause = false;//----------PLAYER------------//int score = 0;bool IsDead = false;int playerCount = 0;int inc_score = 5;int HP = 100;int SP = 100;//----------OTHER-------------//int over = 0;int enemy = 0;int totalenemy = 0;//----------------------------////---------DIRECTION----------//bool LimitUpDown = false;//----------------------------//void MyGame();void WinGame(){ while(pause==true) { system("cls"); for(int x = 0; x < 20; x++) { cout<<GameWinner[x]<<endl; } if(GetAsyncKeyState(VK_F1)!=0) { pause = false; if(enemy==0) { map[2][2] = '*'; map[2][3] = '@'; } MyGame(); } if(GetAsyncKeyState(VK_ESCAPE)!=0) { pause = false; } }}void MyGame(){ while((pause==false)&&(IsDead == false)) { system("cls"); for(int x = 0; x < 7; x++) { cout<<map[x]<<endl; } for(int x = 0; x < 17; x ++ ) { for(int y = 0 ; y < 17 ; y ++ ) { switch(map[y][x]) { case '*': { if(LimitUpDown==false) { int y2 = y - 1; //up switch(map[y2][x]) { case ' ': { map[y][x] = ' '; y -= 1; map[y2][x] = '*'; }break; case '@': { map[y][x] = ' '; y -= 1; map[y2][x] = '*'; }break; case '#': { LimitUpDown = true; }break; } } else { //down int y2 = y + 1; switch(map[y2][x]) { case ' ': { map[y][x] = ' '; y += 1; map[y2][x] = '*'; }break; case '@': { map[y][x] = ' '; y += 1; map[y2][x] = '*'; }break; case '#': { LimitUpDown = false; }break; } } }break; case '@': { if(GetAsyncKeyState(VK_UP)!=0) { int y2 = y - 1; switch(map[y2][x]) { case ' ': { map[y][x] = ' '; y -= 1; map[y2][x] = '@'; }break; case '*': { score = score+inc_score; map[y][x] = ' '; y -= 1; map[y2][x] = '@'; }break; } } if(GetAsyncKeyState(VK_DOWN)!=0) { int y2 = y + 1; switch(map[y2][x]) { case ' ': { map[y][x] = ' '; y += 1; map[y2][x] = '@'; }break; case '*': { score = score+inc_score; map[y][x] = ' '; y += 1; map[y2][x] = '@'; }break; } } if(GetAsyncKeyState(VK_RIGHT)!=0) { int x2 = x + 1; switch(map[y][x2]) { case ' ': { map[y][x] = ' '; x += 1; map[y][x2] = '@'; }break; case '*': { score = score+inc_score; map[y][x] = ' '; x += 1; map[y][x2] = '@'; }break; } } if(GetAsyncKeyState(VK_LEFT)!=0) { int x2 = x - 1; switch(map[y][x2]) { case ' ': { map[y][x] = ' '; x -= 1; map[y][x2] = '@'; }break; case '*': { score = score+inc_score; map[y][x] = ' '; x -= 1; map[y][x2] = '@'; }break; } } }break; } if(GetAsyncKeyState(VK_ESCAPE)!=0) { pause = true; } } } for(int x = 0 ; x < 17; x ++ ) { for(int y = 0; y < 17; y ++ ) { if(map[y][x]=='@') { playerCount ++; } } } if(playerCount==0) { IsDead = true; over += 1; } for(int x = 0 ; x < 17; x ++ ) { for(int y = 0; y < 17 ; y++) { if(map[y][x]=='*') { enemy ++; } } } if(totalenemy<=enemy) { totalenemy = enemy; } if(enemy==0) { pause = true; WinGame(); } cout<<"----------------------------------"<<endl; cout<<"ENEMY: "<<enemy<<endl; cout<<"SCORE: "<<score<<endl; cout<<"GAME SPEED: "<<game_speed<<endl; cout<<"----------------------------------"<<endl; cout<<"Health: "<<HP<<endl; cout<<"----------------------------------"<<endl; Sleep(game_speed); enemy = 0; playerCount = 0; } while(IsDead == true) { system("cls"); for(int x = 0; x < 15; x ++ ) { cout<<GameOver[x]<<endl; } if(GetAsyncKeyState(VK_F1)!=0) { IsDead = false; pause = false; if(enemy == 0) { map[2][2] = '*'; } map[2][3] = '@'; MyGame(); } if(GetAsyncKeyState(VK_ESCAPE)!=0) { IsDead = false; } }}int main(){ MyGame();}Jocul este facut in CodeBlocks, nu l-am testat in Visual sau Dev, in orice caz sper ca nu apar erori. 2 Quote Link to comment Share on other sites More sharing options...
S.L.C Posted October 31, 2015 Report Share Posted October 31, 2015 (edited) Si despre ce este jocul? Cum se joaca?EDIT: nvm. Doar ce am compilat jocul. Are cateva defectiuni cand trebuie sa apara meniul principal. In rest presupun ca este ok. Putin cam greu de jucat totusi.EDIT2:char GameOver[50][50] = ...char GameWinner[50][50] = ...char map[50][50] = ...[50][50] ? ai doar 7 randuri Edited October 31, 2015 by S.L.C Quote Link to comment Share on other sites More sharing options...
yoyois Posted October 31, 2015 Report Share Posted October 31, 2015 Frumos da cam greu de jucat. Ar fi bine sa inveti o implementare mai buna. Poate un OOP.Intre timp postez si eu opera mea de acum cativa ani, neterminata.Console Game:#include <iostream>#include <string>#include <ctype.h>#include <stdio.h>using namespace std;class Item{ public: string name, roomLoc, description; int use;};class Room{ public: int nr; string name; Room* vecini[4]; string description; Item* contain[5];};class User{ public: Room* location; string name; Item* inventory[5];};int action(string w){ if(w=="analyze") return 0; if(w=="look") return 0; if(w=="go") return 1; if(w=="enter") return 1; if(w=="help") return 2; if(w=="location") return 3; if(w=="take") return 4; if(w=="steal") return 4; if(w=="inventory") return 5; return 666;}int object(string w){ if(w=="bathroom") return 0; if(w=="hall") return 1; if(w=="living room") return 2; if(w=="key") return 3; if(w=="biscuit") return 4; if(w=="letter") return 5; return 666;}string readt(){ string input; getline(cin, input); for(int i=0;i<input.length();i++) { input[i]=tolower(input[i]); } return input;}void initial();void decide();void analyze(int c);void enter(int c);void help(int c);int checkNeigh(Room &loc);void take(int c);int takeItem(Item &tk);void inventory();//Global declare space Room hall, bathroom, livingRoom; User User1; Item biscuit, key, letter; int inv;int main(){ cout<<"--Begin--"<<'\n'; initial(); do{ cout<<"\nInsert command: "; decide(); }while(1); return 0;}void initial(){ User1.location = &hall; cout<<"Insert your username:"; User1.name=readt(); cout<<'\n'<<"Welcome agent "<<User1.name<<"!\nYou just woke up with no memories. You find yourself in a big white hall.\nTry to gain more information about your location.\nHow? Try some help!\ntype: help\n"; //room instantiate hall.name = "Hall"; hall.description = "You in are in a big long hall with white walls. In front of you is a door leading to living room."; hall.vecini[0]=&livingRoom; livingRoom.name= "Living Room"; livingRoom.description = "You are in a big living room. On the walls you can see a bear head. In the center of the room is a big table which have around 4 chairs. On the table you find a letter and a biscuit. There is another door with a bathroom sign on it."; livingRoom.vecini[0]=&hall; livingRoom.vecini[1]=&bathroom; bathroom.name="Men's Bathroom"; bathroom.description = "It is a small bathroom. A small sink sits in the corner next to the shower cabin. The toilet seams to be broken."; bathroom.vecini[0]=&livingRoom; letter.name = "old letter"; letter.use = 0; key.name = "golden key"; key.roomLoc = "Under the sink a key shines."; letter.roomLoc = "A letter sits on the table."; biscuit.roomLoc = "You find a biscuit on the floor."; key.use = 1; biscuit.name = "biscuit"; biscuit.use = 2; bathroom.contain[0]=&key; livingRoom.contain[0]=&biscuit; livingRoom.contain[1]=&letter; hall.nr=0; livingRoom.nr=2; bathroom.nr=1;}void decide(){ string input,w1,w2; int p1; input=readt(); p1=input.find(' '); w1=input.substr(0,p1); w2=input.substr(p1+1,input.size()); switch(action(w1)) { case 0: analyze(object(w2)); break; case 1: enter(object(w2)); break; case 2: help(0); break; case 3: help(1); break; case 4: take(object(w2)); break; case 5: inventory(); break; default: cout<<"Wrong action!"<<'\n'; break; }}void analyze(int c){ cout<<User1.location->description; for(int i=0;i<User1.location->nr;i++) cout<<" "<<User1.location->contain[i]->roomLoc; cout<<'\n';}void enter(int c){ switch(c) { case 0: if(checkNeigh(bathroom)){ User1.location = &bathroom; cout<<"You went to bathroom."<<'\n';}else cout<<"No bathroom around.\n"; break; case 1: if(checkNeigh(hall)){User1.location = &hall; cout<<"You went to hall."<<'\n';}else cout<<"No hall around."; break; case 2: if(checkNeigh(livingRoom)){User1.location = &livingRoom; cout<<"You went to living room."<<'\n';}else cout<<"No living room around"; break; default: cout<<"Wrong action!"<<'\n'; break; }}void inventory(){ cout<<"You have: "; for(int i=0;i<inv;i++) cout<<User1.inventory[i]->name<<", "; cout<<'\n';}void help(int c){ if(c==0) cout<<"Type 2 words commands: action + object\nLike:analyze, look, go, enter, location, take, steal, help, inventory\nTry: analyze hall or simply: look\n"; else if(c==1) cout<<"You are in the: "<<User1.location->name<<'\n';}void take(int c){ switch(c) { case 3: takeItem(key); break; case 4: takeItem(biscuit); break; case 5: takeItem(letter); break; default: cout<<"You can't take that!\n"; }}int takeItem(Item &tk){ for(int i=0;i<=5;i++) { if(&tk == (User1.location->contain[i])) { User1.inventory[inv]=&tk; User1.location->contain[i]=NULL; inv++; User1.location->nr--; cout<<"You took: "<<tk.name<<'\n'; return 1; } } cout<<"Can't find that!\n"; return 0;}int checkNeigh(Room &loc){ for(int i=0;i<=4;i++) { if(&loc == (User1.location->vecini[i])) return 1; } return 0;} 2 Quote Link to comment Share on other sites More sharing options...
Column Posted October 31, 2015 Author Report Share Posted October 31, 2015 S.L.C. am testat inainte de a-l pune pe forum cu mai multe linii si coloane si am uitat sa le mai editez.. si yoyois este frumos jocul! Quote Link to comment Share on other sites More sharing options...