klimek1313 utworzono 2 lipca 2009 utworzono 2 lipca 2009 witam, chciałbym napisać programik odzwierciedlający manewrowanie statkiem. grafika jest najmniej istotna. na poczatek ważne byłoby sterowanie z klawiatury (np. dwa klawisze dajace siłę w dwóch punktach przyłożenia śrub, dwa klawisze wychylenia sterów) plus dodatkowe wektory sił wypadkowych. moje doswiadczenie z programowaniem to tylko VisualBasic dzieki za porady pozdrawiam
benkowik komentarz 2 lipca 2009 komentarz 2 lipca 2009 Ciężko powiedzieć o grze, jeśli nie znasz podstaw programowania danego języka (no oprócz VB). Do gier nada się C++ a dużo nauki przed Tobą. Porozglądaj się w tych linkach: http://www.unit1.pl/'
klimek1313 komentarz 2 lipca 2009 Autor komentarz 2 lipca 2009 za duzo powiedziane: "gra" chcialbym coś jak: wstaw obiekt - poruszaj nim klawiaturą - dodaj warunki poruszania ot, tylko tyle
benkowik komentarz 2 lipca 2009 komentarz 2 lipca 2009 Wiesz obiekt to może być np. komponent TPanel w Delphi. Aby nim poruszać piszesz kod: unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;type TForm1 = class(TForm) Panel1: TPanel; procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);beginif Key = 37 thenPanel1.Left := Panel1.Left - 5;if Key = 39 thenPanel1.Left := Panel1.Left + 5;if Key = 38 thenPanel1.Top := Panel1.Top - 5;if Key = 40 thenPanel1.Top := Panel1.Top + 5;end;end. Można oczywiście grę zrobić w Delphi ale większość powstaje w C++
Archimedes komentarz 2 lipca 2009 komentarz 2 lipca 2009 http://www.gamedev.pl/tutorials.php Jeżeli nie znasz dobrze C++ to powinno się przydać.
luq komentarz 2 lipca 2009 komentarz 2 lipca 2009 Zainteresuj się biblioteką SDL pod C++, ale bez znajomości języka dość długo zajmie Ci napisanie takiego czegoś.
Archimedes komentarz 2 lipca 2009 komentarz 2 lipca 2009 To by dało rade w bibliotece Allegro, jest nawet łatwiejsza.
klimek1313 komentarz 2 lipca 2009 Autor komentarz 2 lipca 2009 holender, a np nie ma czegos takiego jak : umiesc obiekt poprzez draganddrop, oznacz na nim punkty obrotu i przyłożenia sił, wyreguluj sobie siły jakie chcesz uzyć?n wiem, to zbyt proste by było żeby prawdziwe, ale zapytać się można... a co to biblioteka Allegro?
benkowik komentarz 2 lipca 2009 komentarz 2 lipca 2009 Czytaj o Allegro Oj tak łatwo nie będzie, chyba że znajdziesz program do robienia gier z takimi elementami ale wątpię
luq komentarz 2 lipca 2009 komentarz 2 lipca 2009 To by dało rade w bibliotece Allegro, jest nawet łatwiejsza. A no tak. Nie trza pisać własnego putPixela itp.
klimek1313 komentarz 3 lipca 2009 Autor komentarz 3 lipca 2009 oki, przeglądam powolutku Allegro... czy jest tu możliwość sumowania wektorów, tzn. otrzymania wypadkowej dwóch sił, dwie strzałki w różnych kierunkach, druga zaczyna się z końca pierwszej, a długość i kierunek trzeciej (od początku pierwszej do końca drugiej) liczy program?
Demerzel komentarz 3 lipca 2009 komentarz 3 lipca 2009 Cóż może się moderator któryś ruszy by to przykleić wyżej, łatwiej będzie znaleźć . Zamiast pytać odpowiedzi szukać samemu można. http://www.forumpc.pl/index.php?showtopic=18930 Wszystko co jesteś w stanie obliczyć na kartce możesz zapisać w formie programu... // Nikt tego nie będzie przyklejał. // Temat jak temat. // Benkowik
luq komentarz 4 lipca 2009 komentarz 4 lipca 2009 klimek1313 robisz tak samo jak na kartce, jedyne o czym trzeba pamiętać to inne przedstawienie układu współrzędnego, na matematyce uczą kartezjańskiego tutaj go nie masz.
klimek1313 komentarz 15 lipca 2009 Autor komentarz 15 lipca 2009 chyba można zamknąć wątek . mam już milion pytań. im głębiej w las tym więcej drzew.... pozdrawiam i dzięki za podpowiedzi. pojawię się z pytaniami na forum, jak nie znajdę gdzies na FAQach
benkowik komentarz 15 lipca 2009 komentarz 15 lipca 2009 chyba można zamknąć wątek . Tematów nie zamykamy mam już milion pytań. im głębiej w las tym więcej drzew....pojawię się z pytaniami na forum, jak nie znajdę gdzies na FAQach Dobre postanowienie Gdyby wszyscy mieli taką idee to nie istniałby dublowane pytania
klimek1313 komentarz 17 lipca 2009 Autor komentarz 17 lipca 2009 i wróciłem.... może zacząć nowy temat? dla jasności wstawiać wszystko dotyczące mojego programu? zobaczymy... na razie, po obfitych w poty, nie w wypociny, dniach, mam juz dwie funkcje po okolo 20 linii... dla jasności sytuacji, miałby byc to program symulujący sterowanie statkiem, ShipSimulator zupełnie mnie rozczarował dlatego postanowiłem zrobić coś swojego. grafika na razie nie gra roli. zatrzymałem się tuz po starcie: sterowanie klawiszami "Ahead" i "Astern". odczytuję klawisze, zliczam ich ilość, ale wartość program podaje dopiero po wciśnięciu ENTER. 1. problem: jak uruchomic funkcję jednym nacisnięciem klawisza? tzn. przyciskam i trzymam np. "o", program pokazuje ilość "o": 1..2...3..4...5..., aż do momentu puszczenia klawisza. nie chcę gotowych funkcji (choc oczywiście nie pogardzę), czytałem FAQi, google, echo... może jeszcze za mało w tym siedzę. Jak mam odczytac ilość przycisnięć klawisza bez wciskania Enter, "w czasie rzeczywistym"? proszę o podpowiedzi dzięki
luq komentarz 17 lipca 2009 komentarz 17 lipca 2009 W takiej sytuacji wykorzystuje się pętle nieskończone (dawno nie pisałem nic w c++): bool go = true; while( go ){ // powiedzmy że w key mamy kod naciśniętego klawisza (w rzeczywistości przyrównuje się go do kodów ASCII klawisza lub co najwyżej stałych) if( key == 'esc' ){ go = false; } else if( key == 'left_array' ){ // coś tam rób } } Tyle że na szybszych kompach kod będzie działał szybciej (np. w bardzo stare gry na dzisiejszych kompach nie da się grać, za szybko chodzą, bo właśnie pisało się je w taki sposób, dlatego poza emulacją trzeba "sztucznie zwalniać kompa"), dlatego stosuję się tzw. timery. Właściwie jeśli piszesz coś takiego timery nie są raczej niezbędne, ale fajnie było by jakbyś pisał w jakieś bibliotece graficznej.
klimek1313 komentarz 17 lipca 2009 Autor komentarz 17 lipca 2009 ale fajnie było by jakbyś pisał w jakieś bibliotece graficznej. czy zainstalowanie składników allegro wystarczy? czy ma tez ona swój język?.... eeech..... poza tym - lipa: #include <string>#include <iostream>#include <conio.h>void main(){char chPlus, chMinus, chKey;int iSila;iSila = 0;std::cout << "Podaj znak, ktory bedzie zwiekszal: ";std::cin >> chPlus;std::cout << "Podaj znak, ktory bedzie redukowal: ";std::cin >> chMinus;std::cout << "Ruszaj! ";bool go = true;while( go ) { std::cin >> chKey; if( chKey == 's' ) {go = false;} else { if (chKey == chPlus) ++iSila; else if (chKey == chMinus) --iSila; std::cout << "Sila: " << iSila << std::endl; } }} czeka na Enter...... a może jest cos takiego jak key_pressed albo coś? .... oki, szukam dalej...
tom300 komentarz 17 lipca 2009 komentarz 17 lipca 2009 Spróbuj może zamiast std::cin >> chKey; dać chKey=getch(); Raczej nie powinno już czekać na enter
klimek1313 komentarz 20 lipca 2009 Autor komentarz 20 lipca 2009 bomba! lecę w takim razie dalej. dzięki ....z pomocy dydaktycznej:.... al_key_down bool al_key_down(const ALLEGRO_KEYBOARD_STATE *state, int keycode) Return true if the key specified was held down in the state specified. rozumiem, że oznacza to, iż jeżeli klawisz jest wciśnięty to zwraca prawdę. więc dlaczego w tej pętli czeka na ESC, ale nie czeka już na UP tylko zwiększa "r", ciągle w kółko?: while(!al_key_down(&key_state, ALLEGRO_KEY_ESCAPE)) { if (al_key_down(&key_state, ALLEGRO_KEY_UP)); { al_get_keyboard_state(&key_state); al_clear_to_color( al_map_rgb(128,0,0) ); ++r; al_draw_filled_circle( 290, 250, r, al_map_rgb(100,180,245) ); al_flip_display(); } } dzięki
luq komentarz 21 lipca 2009 komentarz 21 lipca 2009 if (al_key_down(&key_state, ALLEGRO_KEY_UP)); To przez omyłkowy średnik na końcu
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.