x-kom hosting

Jaki język?

klimek1313
utworzono
utworzono

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
komentarz

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
komentarz

za duzo powiedziane: "gra" :)

chcialbym coś jak: wstaw obiekt - poruszaj nim klawiaturą - dodaj warunki poruszania

ot, tylko tyle ;)

benkowik
komentarz
komentarz

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
komentarz

http://www.gamedev.pl/tutorials.php Jeżeli nie znasz dobrze C++ to powinno się przydać.

luq
komentarz
komentarz

Zainteresuj się biblioteką SDL pod C++, ale bez znajomości języka dość długo zajmie Ci napisanie takiego czegoś.

Archimedes
komentarz
komentarz

To by dało rade w bibliotece Allegro, jest nawet łatwiejsza.

klimek1313
komentarz
komentarz

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
komentarz

Czytaj o Allegro

Oj tak łatwo nie będzie, chyba że znajdziesz program do robienia gier z takimi elementami ale wątpię ;)

luq
komentarz
komentarz
To by dało rade w bibliotece Allegro, jest nawet łatwiejsza.

A no tak. Nie trza pisać własnego putPixela itp. ;)

klimek1313
komentarz
komentarz

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
komentarz

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
komentarz

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.

  • 2 tygodnie później...
klimek1313
komentarz
komentarz

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
komentarz
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
komentarz

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... :P

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
komentarz

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
komentarz
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
komentarz

Spróbuj może zamiast

std::cin >> chKey;

dać

chKey=getch();

Raczej nie powinno już czekać na enter ;)

klimek1313
komentarz
komentarz

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
komentarz

:)

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.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.