Piotr Konieczny

konsultant ds. bezpieczeństwa, podróżnik,
hobbystycznie fuksiarz i gadżeciarz
szkot, prawie spadochroniarz...
nienawidzi zielonego.


« wszystkie wpisy |

Niedziela, 27 sierpnia 2006 :: 19:50:52

Kod źródłowy w dowolnym języku jako strona WWW (HTML)

GiM napisał ostatnio PERL-owy parser c2xhtml, służący do przedstawiania kodu źródłowego języka C w postaci kolorowej strony WWW. (Kolorowanie składni w HTML przydaje się np. do listowania na blogu fragmentów kodu naszego programu w ładny wizualnie sposób).

Ja pokażę Wam, jak uzyskać podobny efekt dla dowolnego języka (np. Java(Script), PERL, CSS, C#, Cobol, a nawet HTML), niezależnie od platformy. I to wszystko, bez potrzeby instalacji PERL-a (co na pewno docenią Windowsiarze).

Potrzebny natomiast będzie darmowy i otwarty edytor Vim oraz przeglądarka Opera (no, FF też będzie dobry :P). W Vima zaopatrujemy się tutaj - wybierając naszą platformę.

Po ściągnięciu, odpalamy gVima i otwieramy w edytorze kod, który chemy przekonwertować do HTML-a (i pokolorować mu składnię).

Convert code to HTML (Vim)

Następnie, z menu wybieramy Syntax → Convert to HTML.

Convert code to HTML (Vim)

Naszym oczom ukazuje się okno podzielone na dwa obszary:

Convert code to HTML (Vim)
Powyżej znajduje się wygenerowany kod strony HTML — poniżej, nasz oryginalny kod źródłowy.

Klikamy w górny obszar, i zapisujemy plik z kodem HTML. Teraz możemy oglądać go w przeglądarce:

Convert code to HTML (Vim)

Zauważcie, że wygenerowana strona HTML ma wygląd okna edytora, a dokładniej theme, z jakiego korzystamy w Vimie. (Ja korzystam z lekko przeze mnie zmodyfikowanego oceandeep). Nic jednak nie stoi na przeszkodzie, żeby zmienić theme na dowolny inny. (Jeśli nie wystarczą standardowe, zawsze można dociągnąć setki innych).

Aby zmienić schemat kolorów, z menu wybieramy: Edit → Color Scheme.

Convert code to HTML (Vim) Convert code to HTML (Vim)

Dodatkowo, na powyższym usunięte zostały numery linii - co czyni kod łatwiejszym do kopiowania. (komenda Vima: <ESC>:set nonumbers)

Vim to potężny edytor, potrafiący robić bardziej WOW-things niż kolorowanie składni i eksport do HTML. Niestety, w naukę Vima trzeba zainwestować kilka godzin... Zainteresowanym polecam świetny przewodnik w języku polskim — idealny ma start! Sam z niego korzystałem, a od dwóch miesięcy, ciągle noszę wydrukowaną wersję w plecaku (poważnie! w końcu w 50% — przynajmniej przez najbliższych pare tygodni — jestem programistą PERL-a... :-)

PS: Dla wnikliwych. Export do HTML możemy odpalić wydając komednę :runtime! syntax/2html.vim w Normal mode. Również ta komenda powinna być używana w mapowaniach. Teraz już pewnie wiecie, , w którym pliku znajduje się kod odpowiedzialny za transport do HTML-a :-) Więc jeśli komuś nie podoba się generowany kod, to jazda; zmieniać i publikować!

• Następny post: (Ugly) SSH via CGI (WWW)
• Poprzedni post: Odeo - poczta głosowa dla Twojego bloga (strony WWW)

 

Chcesz być informowany o kolejnych wpisach na ten temat?
Kanał RSS: kliknij tutaj. Subskrybcja poprzez e-mail: kliknij tutaj.

 

Tagi:

« reszta wpisów | • trackback | ‡ torturuj posta!

Komentarze:

1. mcv Niedziela, 27 sierpnia 2006, 19:57:36
 

Ech, jak zacząłem czytać o skrypcie i Perlu, już w głowie miałem ułożony komentarz, że przecież wystarczy Vima użyć ;-)

 
2. zar Niedziela, 27 sierpnia 2006, 19:57:54
 

Converted code? No, thx.

 
3. Krzysiek S. Niedziela, 27 sierpnia 2006, 19:58:17
 

Ale nie wziąłeś pod uwagę tego, że Vim generuje straszną papkę w stylu <font color="...">. To się nie nadaje do wstawienia na stronę ;-)
Dużo lepszym rozwiązaniem jest skrypt Geshi (napisany w PHP4), który obsługuje również nie małą ilość języków, ale generuje kolorowy kod opierając się na CSS-ie i <span>-ach.

 
4. Piotr Konieczny Niedziela, 27 sierpnia 2006, 20:01:38
 

Krzysiek S., zar: W "PS" wskazałem plik odpowiedzialny za konwersję, jeśli komuś zostanie jeszcze troche samozaparcia (z forsowania zgodności stron z walidatorami) może je spożytkować na dostosowanie skryptu vima. Dość powiedzieć, że kod z użytym font, czy span style="color:" wygląda tak samo...

 
5. zar Niedziela, 27 sierpnia 2006, 20:04:17
 

Krótko: nie zgadzam się :)
Np. dlatego, że do span style możesz dodać background i w kij innych rzeczy... ale to i tak bez sensu - cssy są po to, by je includować (poza kilkoma przypadkami, np. przy includowaniu różnego contentu).

 
6. jam łasica Niedziela, 27 sierpnia 2006, 20:05:15
 

W KDE jest prościej (KWrite, etc.) :P
Plik->Eksportuj jako HTML lub Edycja->Kopiuj jako HTML

 
7. Piotr Konieczny Niedziela, 27 sierpnia 2006, 20:07:56
 

zar: Ta... żeby wkleić trzy pokolorowane linie kodu na bloga, będę dołączał plik css... Kciukas!

jam łasica: Dzięki, nie wiedziałem o tym.

 
8. Krzysiek S. Niedziela, 27 sierpnia 2006, 20:09:14
 

Piko: <font color="..."> przy <span> i CSS wygląda jak stara wyklepana Syrenka po czołowym zderzeniu - niektórym się podoba ;-)
Ale chciałbym Ci Piotrze przypomnieć, że HTML 3.2 oraz HTML 4.01 Transistional odchodzą już w przeszłość i lepiej, żebyśmy o nich zapominali. A CSS, w najgorszym przypadku, możesz zamieścić inline.

 
9. Piotr Konieczny Niedziela, 27 sierpnia 2006, 20:14:07
 

Krzysiu, ja nie bronie tego rozwiązania. Z całego serca Was zachęcam do poprawienia skryptu generujacego HTML w Vimie.

(Wiem, ze nawet jesli mnie on wystarcza, kilka osob ma powazniejsze potrzeby). Poki co, :%s/obscured_tag//g u mnie spisuje sie dobrze :-)

 
10. TomAsh Niedziela, 27 sierpnia 2006, 20:17:26
 

Jest też taki przyjemny programik o nazwie "highlight" (dostępny też pod windows).

Opis (spisany pod Ubuntu):
It transforms source code to HTML, XHTML, RTF, LaTeX, TeX or XSL-FO files with syntax highlighting. Highlight supports 85 programming languages. Its language definitions and colored themes are customizable.

Oczywiści popieram stwierdzenie, że vim to potęga.

 
11. zar Niedziela, 27 sierpnia 2006, 20:19:29
 

Tak, ale czy to wygląda jak należy także w innych przeglądarkach? Nie ma się co oszukiwać - errory z http://tiny.pl/798d i http://tiny.pl/7981 mają jakiś wpływ na stronę, choćby niewidoczny gołym okiem w ff...

 
12. GiM Niedziela, 27 sierpnia 2006, 20:49:55
 

@piko, zamiast straszyć początkujących prawie 300stronicowym manualem, lepiej pokazać coś takiego:
http://www.fprintf.net/vimCheatSheet.html gdzieś,kiedyś widziałem dużo lepszy, taki który nadawał się ładnie do drukowania :-)

 
13. Patrys Niedziela, 27 sierpnia 2006, 21:04:14
 

"Vim to potężny edytor, potrafiący robić bardziej WOW-things"

Dobra, przegiąłeś, nie czytam cię przez tydzień. Prowadzisz bloga, czy studnię SEO i słowotwórstwa?

 
14. Patrys Niedziela, 27 sierpnia 2006, 21:09:23
 

(jakby się ktoś zastanawiał, to żartowałem, chociaż WOW-things wydaje mi się żenujące w polskim języku)

BTW: ten szablon jest tragiczny, czytać się da dopiero po pół minuty od wejścia na stronę, wszystko sobie jeździ w tę i nazad.

 
15. Piotr Konieczny Niedziela, 27 sierpnia 2006, 21:16:35
 

Patrys: Jakieś propozycje co do WOW-things? Wodotryski, cuda na patyku? A może "vim po prostu rozpierdala, koleś"? :-)
Strona jeździ, bo to Web 3.666 - dynamika, jakiej świat nie widział! A poważnie, to cholera mnie brała, jak robiłem to na divach, stąd tabelki i - jak mówi Riddle - to właśnie one są powodem rozjazdów.

PS: Ten wpis to akurat nie jest SEO-orient^W zoptymalizowany :-)

 
16. radious Niedziela, 27 sierpnia 2006, 21:36:18
 

A tak od siebie dodam, że kto nie lubi VIMa (ja na przykład nienawidzę programować w nim) może użyć jEdita i jednego z pluginów (tak, ten o nazwie code2html), który css dołącza w pliku źródłowym

 
17. Riddle Niedziela, 27 sierpnia 2006, 22:40:53
 

>> Dość powiedzieć, że kod z użytym font, czy span style="color:" wygląda tak samo..

Ech, a myślałem że wy już wyginęliście… :-(

 
18. danadam Niedziela, 27 sierpnia 2006, 22:48:30
 

Chciało ci się drukować? Nie prościej w VIMie wpisać
:help

PS
Web 3.666, dobre ;-)

 
19. Liorithiel Niedziela, 27 sierpnia 2006, 23:05:02
 

let html_use_css = 1
let use_xhtml = 1

Wystarczy to wrzucić do ~/.vimrc, żeby vim używał css/xhtml zamiast <font/>. To jest w kodzie skryptu. Można też dodać:

let html_no_pre = 1
let html_number_lines = 1

 
20. czara Poniedziałek, 28 sierpnia 2006, 03:11:27
 

GiM : chodzilo Ci zapewne o to http://img98.imageshack.us/img98/6061/vivimcheatsheetfh5.gif

 
21. KNT Poniedziałek, 28 sierpnia 2006, 17:34:46
 

(Wybaczcie, musiałem) A co z Emacs'em? ^_^

 
22. PaneQ Środa, 30 sierpnia 2006, 11:50:19
 

Ok no to powiedzcie mi co takiego fajnego jest w vimie, ze warto go uzywac zamias np. kdevelop ?

 
23. mcv Środa, 30 sierpnia 2006, 17:47:04
 

1. Dlaczego „Ok”?
2. Jak w KDevelop dopisać „action_” przed każdym elementem tablicy

array (
"frontpage",
"login",
"logout",
"auth",
"data",
… (20 linijek)
);

za jednym zamachem?

 
24. Marcin Maj Środa, 30 sierpnia 2006, 19:48:00
 

A ja właśnie odkryłem, że zwykły Kate też ma funkcje eksportu do HTML (oczywiśćie z podświetlana skłądnią). A w naukę Kate nie muszę inwestować żadnych tam godzin. Prawie jak notatnik ;-)

 
25. TomAsh Środa, 30 sierpnia 2006, 19:51:04
 

Tyle, że Kate (nie mówie, że złe) nie ma nawet ułamka możliwości vim'a. Mówi się, że inwestycje procentują, a taką inwestycją może być nauka vim'a, ponieważ jeśli dobrze się go nauczyć to bardzo ułatwia pracę.

 
26. Marcin Maj Środa, 30 sierpnia 2006, 20:39:09
 

@TomAsh: Ja przyznam, ze Vima nie lubię od pierwszego wejrzenia, zresztą moim pierwszym edytorem na linuksie był emacs i to chyba kwestia przyzwyczajenia. Ale wolę Kate, niż Vima. Czemu? Nie wiem. Nigdy do mnie nie przemawiały te komendy z dwukropkami.

 
27. TomAsh Środa, 30 sierpnia 2006, 20:42:37
 

@Marcin Maj: Jak to mawiają (a ludzie dużo mówią :P) jedni wolą jabłka, inni gruszki. Przez zmuszanie można tylko nabawić się niestrawności... co innego dobra rada... :]

 
28. Pelsedu Niedziela, 18 października 2009, 00:10:24
 

#ifndef POLISH_CPP
#define POLISH_CPP

#include "linker.h"

#include <fstream>
#include <sstream>

#define CLEAR system("cls")

using namespace std;

DataCastle class01;
Castle class02;
Army class03;

int Blokada(){


return &class01;
}

void Oszustwa(){
CLEAR;
string cheat;
cout<<"Podaj kod do oszustwa:";
cin>>cheat;

if(cheat=="Pelsedu_stworzyl_te_gre!"){
class01.Gold=1000000;
class01.Silver=1000000;
class01.Bronze=1000000;
class01.Wood=1000000;
class01.Stone=1000000;
class01.Food=1000000;
class01.Gold=1000000;
class01.Copper=1000000;
class01.Coal=1000000;
class01.Beer=1000000;
class01.Paper=1000000;
class01.Weapons=1000000;
class01.MaxSorowce=1000000;
MessageBox(NULL,"1 000 000, kazdego sorowca!","Gratulacje!",MB_OK|MB_ICONINFORMATION);
}
if(cheat=="Rok_wydania_gry_2009!"){
class01.Population=0;
class01.MaxPopulation=10000000;
MessageBox(NULL,"Maksymalna populacja 10000000 + wyzerowanie populacji!","Gratulacje!",MB_OK|MB_ICONINFORMATION);
}
if(cheat=="Nr.GG_Pelsedu_to_1647415!"){
if(class03.Fighter!=1){
class03.Fighter++;
MessageBox(NULL,"Unikalna jednostka!Fighter","Gratulacje!",MB_OK|MB_ICONINFORMATION);
}
else{MessageBox(NULL,"Mozesz posiadac tylko 1 jednostke fightera!","Przykro mi!",MB_OK|MB_ICONINFORMATION);}

}
};

void show(int what){

HANDLE color;
color=GetStdHandle(STD_OUTPUT_HANDLE);

CLEAR;
if(what==1){
cout <<"Zloto:\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class01.Gold<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Srebro:\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class01.Silver<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Bronz:\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class01.Bronze<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Drewno:\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class01.Wood<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Kamien:\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class01.Stone<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Jedzenie:\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class01.Food<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Glina:\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class01.Copper<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Wegiel:\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class01.Coal<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Piwo:\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class01.Beer<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Papier:\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class01.Paper<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Bron:\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class01.Weapons<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"\nPopulacja(Dodatkowe Informacje):\t\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class01.Population<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Maksymalna Populacja(Dodatkowe Informacje):\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class01.MaxPopulation<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Maksymalna Ilosc Sorowcow(Dodatkowe Informacje):\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class01.MaxSorowce<<endl;
SetConsoleTextAttribute(color,WHITE);
}

if(what==2){
cout <<"Kopalnia Zlota:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.MineGold<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Kopalnia Srebra:\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.MineSilver<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Kopalnia Bronzu:\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.MineBronze<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Tartak:\t\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.Woodyard<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Kopalnia Kamienia:\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.MineGold<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Kopalnia Gliny:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.MineCopper<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Kopalnia Wegla:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.MineCoal<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Browar:\t\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.Brewery<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Manufaktura Papieru:\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.PaperFactory<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Zamek:\t\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.Zamek<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Magazyn:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.Spichlerz<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Domy:\t\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.Domy<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Biblioteka:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.Biblioteka<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Laboratorium:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.Laboratorium<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Koszary:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.Koszary<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Kuznia:\t\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.Kuznia<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Skarbiec:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class02.Skarbiec<<endl;
SetConsoleTextAttribute(color,WHITE);
}

if(what==3){
cout <<"Szermierz:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class03.Szermierz<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Topornik:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class03.Topornik<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Wlocznik:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class03.Wlocznik<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Lucznik:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class03.Lucznik<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Lekka Jazda:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class03.LekkaJazda<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Ciezka Jazda:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class03.CiezkaJazda<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Lucznik Na Koniu:\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class03.KonnyLucznik<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Kapitan:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class03.Kapitan<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Chlop:\t\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class03.Chlop<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Gladiator:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class03.Gladiator<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Balista:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class03.Balista<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Katapulta:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class03.Katapulta<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Slon Bojowy:\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class03.SlonieBojowe<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Heros:\t\t\t\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class03.Heros<<endl;
SetConsoleTextAttribute(color,WHITE);
cout <<"Fighter(Jednostka Specjalna):\t";
SetConsoleTextAttribute(color,LGREEN);
cout <<class03.Fighter<<endl;
SetConsoleTextAttribute(color,WHITE);
}



class Army{
public:
unsigned int Szermierz;
unsigned int Topornik;
unsigned int Wlocznik;
unsigned int Lucznik;
unsigned int LekkaJazda;
unsigned int CiezkaJazda;
unsigned int KonnyLucznik;
unsigned int Kapitan;
unsigned int Chlop;
unsigned int Gladiator;
unsigned int Balista;
unsigned int Katapulta;
unsigned int SlonieBojowe;
unsigned int Heros;
unsigned int Fighter;
};






Sleep(500);
cout<<"Wcisnij dowolny klawisz by powrocic do menu"<<endl;
getch();
}


void wczytaj(){
CLEAR;
cout<<"Trwa Wczytywanie Danych!"<<endl;

{//
ifstream load("doc\\File1.txt");
string dane;
getline(load,dane);
istringstream data(dane);
data >> class01.Gold;
getline(load,dane);
data.clear();data.str(dane);
data >> class01.Silver;
getline(load,dane);
data.clear();data.str(dane);
data >> class01.Bronze;
getline(load,dane);
data.clear();data.str(dane);
data >> class01.Wood;
getline(load,dane);
data.clear();data.str(dane);
data >> class01.Stone;
getline(load,dane);
data.clear();data.str(dane);
data >> class01.Food;
getline(load,dane);
data.clear();data.str(dane);
data >> class01.Copper;
getline(load,dane);
data.clear();data.str(dane);
data >> class01.Coal;
getline(load,dane);
data.clear();data.str(dane);
data >> class01.Beer;
getline(load,dane);
data.clear();data.str(dane);
data >> class01.Paper;
getline(load,dane);
data.clear();data.str(dane);
data >> class01.Weapons;
getline(load,dane);
data.clear();data.str(dane);
data >> class01.Population;
getline(load,dane);
data.clear();data.str(dane);
data >> class01.MaxPopulation;
getline(load,dane);
data.clear();data.str(dane);
data >> class01.MaxSorowce;
}//

cout<<"Stan Sorowcow Wczytany!"<<endl;

{//
ifstream load("doc\\File2.txt");
string dane;
getline(load,dane);
istringstream data(dane);
data >> class02.MineGold;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.MineSilver;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.MineBronze;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.Woodyard;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.MineStone;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.Farm;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.MineCopper;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.MineCoal;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.Brewery;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.PaperFactory;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.Zamek;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.Spichlerz;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.Domy;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.Gospoda;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.Biblioteka;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.Laboratorium;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.Koszary;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.Kuznia;
getline(load,dane);
data.clear();data.str(dane);
data >> class02.Skarbiec;
}//

cout<<"Stan Zamku Wczytany!"<<endl;

{//
ifstream load("doc\\File3.txt");
string dane;
getline(load,dane);
istringstream data(dane);
data >> class03.Szermierz;
getline(load,dane);
data.clear();data.str(dane);
data >> class03.Topornik;
getline(load,dane);
data.clear();data.str(dane);
data >> class03.Wlocznik;
getline(load,dane);
data.clear();data.str(dane);
data >> class03.Lucznik;
getline(load,dane);
data.clear();data.str(dane);
data >> class03.LekkaJazda;
getline(load,dane);
data.clear();data.str(dane);
data >> class03.CiezkaJazda;
getline(load,dane);
data.clear();data.str(dane);
data >> class03.KonnyLucznik;
getline(load,dane);
data.clear();data.str(dane);
data >> class03.Kapitan;
getline(load,dane);
data.clear();data.str(dane);
data >> class03.Chlop;
getline(load,dane);
data.clear();data.str(dane);
data >> class03.Gladiator;
getline(load,dane);
data.clear();data.str(dane);
data >> class03.Balista;
getline(load,dane);
data.clear();data.str(dane);
data >> class03.Katapulta;
getline(load,dane);
data.clear();data.str(dane);
data >> class03.SlonieBojowe;
getline(load,dane);
data.clear();data.str(dane);
data >> class03.Heros;
getline(load,dane);
data.clear();data.str(dane);
data >> class03.Fighter;

}//
cout<<"Stan Armii Wczytany!"<<endl;
MessageBox(NULL,"Gra zostala wczytana!","Informacja!",MB_OK|MB_ICONINFORMATION);
}


void zapisz(){
CLEAR;
cout<<"Trwa Zapisywanie Danych!"<<endl;

{//
ofstream zapis("doc\\File1.txt",ios::trunc);
zapis<< class01.Gold <<"\n";
zapis<< class01.Silver <<"\n";
zapis<< class01.Bronze <<"\n";
zapis<< class01.Wood <<"\n";
zapis<< class01.Stone <<"\n";
zapis<< class01.Food <<"\n";
zapis<< class01.Copper <<"\n";
zapis<< class01.Coal <<"\n";
zapis<< class01.Beer <<"\n";
zapis<< class01.Paper <<"\n";
zapis<< class01.Weapons <<"\n";
zapis<< class01.Population <<"\n";
zapis<< class01.MaxPopulation <<"\n";
zapis<< class01.MaxSorowce <<"\n";
}//

cout<<"Stan Sorowcow Zapisany!"<<endl;

{//
ofstream zapis("doc\\File2.txt",ios::trunc);
zapis<< class02.MineGold <<"\n";
zapis<< class02.MineSilver <<"\n";
zapis<< class02.MineBronze <<"\n";
zapis<< class02.Woodyard <<"\n";
zapis<< class02.MineStone <<"\n";
zapis<< class02.Farm <<"\n";
zapis<< class02.MineCopper <<"\n";
zapis<< class02.MineCoal <<"\n";
zapis<< class02.Brewery <<"\n";
zapis<< class02.PaperFactory <<"\n";
zapis<< class02.Zamek <<"\n";
zapis<< class02.Spichlerz <<"\n";
zapis<< class02.Domy <<"\n";
zapis<< class02.Gospoda <<"\n";
zapis<< class02.Biblioteka <<"\n";
zapis<< class02.Laboratorium <<"\n";
zapis<< class02.Koszary <<"\n";
zapis<< class02.Kuznia <<"\n";
zapis<< class02.Skarbiec <<"\n";
}//

cout<<"Stan Zamku Zapisany!"<<endl;

{//
ofstream zapis("doc\\File3.txt",ios::trunc);
zapis<< class03.Szermierz <<"\n";
zapis<< class03.Topornik <<"\n";
zapis<< class03.Wlocznik <<"\n";
zapis<< class03.Lucznik <<"\n";
zapis<< class03.LekkaJazda <<"\n";
zapis<< class03.CiezkaJazda <<"\n";
zapis<< class03.KonnyLucznik <<"\n";
zapis<< class03.Kapitan <<"\n";
zapis<< class03.Chlop <<"\n";
zapis<< class03.Gladiator <<"\n";
zapis<< class03.Balista <<"\n";
zapis<< class03.Katapulta <<"\n";
zapis<< class03.SlonieBojowe <<"\n";
zapis<< class03.Heros <<"\n";
zapis<< class03.Fighter <<"\n";
}//

cout<<"Stan Armii Zapisany!"<<endl;

MessageBox(NULL,"Gra zostala zapisana!","Informacja!",MB_OK|MB_ICONINFORMATION);
}


void newgame(){
zapisz();
}


int menu(HANDLE CC){
char W;

CLEAR;

cout<<"Menu:"<<endl;
// I
SetConsoleTextAttribute(CC,LRED);
cout<<"<1>";
SetConsoleTextAttribute(CC,WHITE);
cout<<"Wyjscie"<<endl;
// II
SetConsoleTextAttribute(CC,LRED);
cout<<"<2>";
SetConsoleTextAttribute(CC,WHITE);
cout<<"Nowa Gra"<<endl;
// III
SetConsoleTextAttribute(CC,LRED);
cout<<"<3>";
SetConsoleTextAttribute(CC,WHITE);
cout<<"Zapisz Gre"<<endl;
// IV
SetConsoleTextAttribute(CC,LRED);
cout<<"<4>";
SetConsoleTextAttribute(CC,WHITE);
cout<<"Wczytaj Gre"<<endl;
// V
SetConsoleTextAttribute(CC,LRED);
cout<<"<5>";
SetConsoleTextAttribute(CC,WHITE);
cout<<"Konsola"<<endl;
// VI
SetConsoleTextAttribute(CC,LRED);
cout<<"<6>";
SetConsoleTextAttribute(CC,WHITE);
cout<<"Stan Sorowcow(Po wczytaniu!)"<<endl;
// VII
SetConsoleTextAttribute(CC,LRED);
cout<<"<7>";
SetConsoleTextAttribute(CC,WHITE);
cout<<"Stan Zamku(Po wczytaniu!)"<<endl;
// VIII
SetConsoleTextAttribute(CC,LRED);
cout<<"<8>";
SetConsoleTextAttribute(CC,WHITE);
cout<<"Stan Armii(Po wczytaniu!)"<<endl;
// IX
SetConsoleTextAttribute(CC,LRED);
cout<<"<9>";
SetConsoleTextAttribute(CC,WHITE);
cout<<"Powrot do Gry(autowczytanie)"<<endl;
// X
SetConsoleTextAttribute(CC,LRED);
cout<<"<0>";
SetConsoleTextAttribute(CC,WHITE);
cout<<"Oszustwa(Trzeba znac kody!)"<<endl;



cout<<"Wybor:";
W=getch();
return W;
}


void PL(){

HANDLE color;
color=GetStdHandle(STD_OUTPUT_HANDLE);

cout<<"Wersja polskiej wersji: 1.5"<<endl;
Sleep(1000);

int wybor;
short int END;

for(;;){
wybor=menu(color);

// I
if(wybor==49){
MessageBox(NULL,"Wyszles z gry!","Informacja!",MB_ICONINFORMATION|MB_OK);
break;
}
// II
if(wybor==50){
newgame();
}
//III
if(wybor==51){
zapisz();
}
//IV
if(wybor==52){
wczytaj();
}
//V
if(wybor==53){
CONSOLE();
}
//VI
if(wybor==54){
show(1);
}
//VII
if(wybor==55){
show(2);
}
//VIII
if(wybor==56){
show(3);
}
//IX
if(wybor==57){
END=1;
wczytaj();
break;
}
//X
if(wybor==48){Oszustwa();}

}

if(END==1){
MessageBox(NULL,"Wchodzisz do zaczarowanego swiata ;)","Informacja!",MB_ICONINFORMATION|MB_OK);
GAMEPLAY(&class01,&class02,&class03);
}
}
#endif

 
29. mm Środa, 09 grudnia 2009, 20:25:49
 

Można zawsze użyć serwisu takiego jak np. http://pokazkod.pl :)

 

Dodaj komentarz:

Wyślij pustą wiadomość, aby śledzić komentarze przez bota.
Komentarze są własnością osób komentujących.
Właściciel bloga nie ponosi za nie odpowiedzialności.
Komentarze nie na temat będą usuwane.

Ofiara

Jeśli powyższy wpis przydał Ci się w jakiś sposób,

autorowi :-)

Czytelnicy:

« wszystkie wpisy