• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

jak wykonać ruch w konsoli c++?

Cloud VPS
0 głosów
2,541 wizyt
pytanie zadane 15 lipca 2016 w C i C++ przez czoperek Obywatel (1,060 p.)
Wiem że podobny temat pojawił się na forum, jednak nie okazał się dla mnie pomocny.
Chciałbym stworzyć prostą grę, mam gotowy licznik punktów, życia i inne tego typu duperele, nie wiem jednak jak zrobić ruch.
Korzystam ze standardowych bibliotek c++ więc nie mogę stworzyć osi X Y. W internecie jest masa filmów które pokazują grę w snake i inne tego typu gierki, często są do nich dołączone kody źródłowe ale mnie takie gotowce nie zadowalają.
Czy może ktoś mi powiedzieć jak zrobić takie poruszanie się po konsoli?
komentarz 15 lipca 2016 przez Ehlert Ekspert (215,050 p.)
Moim zdaniem tego typu pomysły i próby w konsoli to marnotrawstwo czasu.
komentarz 15 lipca 2016 przez niezalogowany
Moim zdaniem też, ale jeśli chce się zrobić porządną grę. Bo takie coś to raczej tylko do edukacji, czy takich projekcików dla satysfakcji, aczkolwiek na co komu przesuwanie znaku w konsoli? Nie wiem. Ale jak chce, niech robi :)
komentarz 15 lipca 2016 przez czoperek Obywatel (1,060 p.)
filipeczek7 jak sam napisałeś na początku "raczej tylko do edukacji" teraz planuje zrobić kilka taki malutkich gier aby potem rozumieć jak to działa i tworzyć coś bardziej zaawansowanego :D
komentarz 15 lipca 2016 przez Ehlert Ekspert (215,050 p.)
Mechanizm poruszania czymkolwiek w konsoli nie ma nic wspólnego z realnym tworzeniem gier nawet z wykorzystaniem prostych technologii jak SFML czy Canvas.
komentarz 15 lipca 2016 przez czoperek Obywatel (1,060 p.)
Tu nie chodzi tylko o system poruszania się. Chodzi głównie o zderzanie się z obiektami, zbieraniem punktów, unikanie wrogów, system punktów. Nie mogę zrobić tego bez systemu poruszania się.
komentarz 15 lipca 2016 przez niezalogowany
No, takie systemy, jak punkty, unikanie, zadawanie obrażeń, to tak, to może wyglądać tak samo w każdej grze :) Ale poruszanie się... No wiesz, może to wyglądać tak samo, jak chcesz robić jakąś grę typu roguelike, w której się nie przemieszczasz, tylko teleportujesz o jednego kafelka, to wtedy tak. Ale jeśli chodzi o zwykłe poruszanie, to to wiadomo, że nie wygląda tak samo. A jeśli chodzi o kolizje, to może i podobnie, ale jeśli chcesz jakieś porządne kolizje i fizykę, to polecam ci bibliotekę Box2D (żeby cię przekonać, powiem ci, że zrobiono na niej Angry Birds, Limbo, World of Goo, Happy Wheels, czyli same znane gry :)), ale to dopiero, jak się nauczysz jakiejś bilbioteki graficznej (znowu polecam, tym razem SFML-a, tak jak kolega wspomniał wcześniej). Ale na razie o tym nie myśl, nie przejmuj się tym, rób swój projekt w konsoli, dużo się nauczysz ;) No i jeśli to ma być porządna gra, to zrób ją najlepiej obiektowo ;)

Ufff, to się rozpisałem.
komentarz 15 lipca 2016 przez czoperek Obywatel (1,060 p.)
Dziękuję za pomoc, z pewnością skorzystam z twoich rad. Jednak mam jedno jeszcze pytanie: Angry Birds jest grą dostępną na platformę Android, czy za pomocą tej biblioteki można pisać gry na tą platformę?
komentarz 15 lipca 2016 przez niezalogowany
Jak widać tak ;) Box2D to jest jedynie silnik fizyczny, więc nic fajnego z nim nie zrobisz, bez żadnej grafiki. Możesz albo w w jakimś silniczku do gier, czyli na przykład GameMaker, czy Cocos2d, albo z biblioteką graficzną, taką jak SFML, SDL czy Allegro. Ja wolę bez używania żadnych silników, czy to darmowych czy nie, tylko z samym SFML-em (bardzo fajna biblioteka graficzna, sam się przekonasz ;)), bo wtedy ma się pełną kontrolę nad swoim programem, no i jest z tego o wiele większa satysfakcja, zrobienie czegoś od podstaw, a nie, że przeciągasz obrazek na jakąś scenę, dajesz do tego obrazka krótki skrypcik na chodzenie i już. Może ci się trochę mieszać, bo wymieniłem tutaj trochę różnych nazw, ale jak już skończysz robić różne programy w konsoli, to polecam ci po prostu się nauczyć SFML-a ;) No i oczywiście nie myśl też, że to będzie tak hop siup, ja się SFML-a uczyłem ze 2-3 miesiące, żeby wszystko fajnie ogarnąć. Box2D to kolejne ze 2 miesiące, żeby się wszystkiego fajnie nauczyć, a 2 tygodnie to na ważniejsze rzeczy, bez szczegółów (ja też dopiero co się uczę Box2D, uczę się go właśnie od jakichś dwóch tygodni, ale nie jest bardzo trudne do ogarnięcia :)).

A tak wracając do tego, czy można robić gry na Androida w Box2D. Box2D jest tylko biblioteką fizyczną, czyli obiekty, kolizje pomiędzy nimi, fizyka, połączenia z tymi ciałami (na przykład taki prosty łańcuch) itp. Żeby jakaś gra działała na np. Androidzie, to to już jest raczej kwestia biblioteki graficznej, czy jakiegoś silnika. Ja się nie interesuję tworzeniem programów mobilnych, więc za dużo o tym nie wiem, ale wiem, że są różne środowiska do tworzenia mobilnych app'ek, więc to już byś musiał się sam nimi zainteresować ;) A jak pisze na stronie SFML-a http://www.sfml-dev.org/ "Windows, Linux, Mac OS X and soon Android & iOS", więc w SFML-u na razie się nie robi aplikacji mobilnych, ale niby będzie można. No, szczerze mówiąc, to będzie coś fajnego :) Ale jeśli chciałbyś robić jakieś appki mobilne, na przykład z użyciem takiego Box2D, to SFML-em się raczej nie interesuj na dłuższą metę, jeśli serio jesteś bardziej zainteresowany platformami mobilnymi. Tutaj taki przykład, że da się robić gry mobilne z użyciem Box2D - https://www.youtube.com/results?search_query=box2d+soft+body Same telefoniki ;) No ale mówię, byś musiał się zainteresować jakimiś środowiskami do tworzenia aplikacji na platformy mobilne.

Znowu się rozpisałem, na taki krótki temat :) Ale na razie się tym raczej nie interesuj, jak chcesz, to dokończ swój projekcik w konsoli ;)

Miłego programowania życzę :)
komentarz 15 lipca 2016 przez czoperek Obywatel (1,060 p.)
Jeszcze raz bardzo dziękuję. W końcu ktoś kto doradzi a nie wyzywa i mówi, że i tak nic nie osiągnę bo jestem początkujący.
komentarz 15 lipca 2016 przez niezalogowany
A bardzo proszę ;) Sam też takich znam i wiem, że mogą dobić. Ale nie myśl o tym, tylko sobie wesoło programuj :) Oni mogą gadać, a i tak całe życie mogą spędzić na niczym. Rób swoje ;)

Pozdrawiam jeszcze raz.

2 odpowiedzi

0 głosów
odpowiedź 15 lipca 2016 przez Adrian1999 Nałogowiec (34,570 p.)
wybrane 15 lipca 2016 przez czoperek
 
Najlepsza

Zasada pierwsza czym jest animacja? Jest to zbiór klatek, w uproszczeniu mówiąc konsola nie jest bardzo płynna starczy że zrobisz tablicę X i Y np

int mapa[3][3];

teraz wypełnisz ją jakimiś przypadkowymi znakami np "-", i swoją postać ustawisz na jakiejś pozycji x i y określonej, i zamienisz ten znak "-" na np "b", i animacja poruszania będzie robiona po czyszczeniu konsoli komendą System("CLS"); ble ble masz tu kod jak zrobiłem przykładowo to ja 

#include <iostream>
#include <Windows.h>
using namespace std;

class gracz
{
public:
	int x, y;
	const char logo = 'A';

	void ruch();
};

int main()
{
	gracz player1;
	player1.x = 10;
	player1.y = 19;
	char mapa[20][20];
	for (int i = 0; i <= 20; i++)
	{
		for (int j = 0; j <= 20; j++)
		{
			if (i == player1.x && j == player1.y)
			{
				mapa[i][j] = player1.logo;
			}
			else
			mapa[i][j] = '-';
		}
	}
	while (true)
	{
		for (int i = 0; i <= 20; i++)
		{
			for (int j = 0; j <= 20; j++)
			{

				cout<<mapa[i][j];
			}
			cout << endl;
			
		}
		system("CLS");
	}
	return 0;
}

starczy tylko zrobić voida ruch i go dobrze zastosować i masz poruszanie się

komentarz 15 lipca 2016 przez czoperek Obywatel (1,060 p.)

a czy coś z tego kodu który sam zrobiłem da się zrobić?

#include <iostream>
#include <conio.h>
#include <windows.h>

using namespace std;

int x=1,y=1;

char ruch;

int main()
{
    cout<<"x="<<x; cout<<" y="<<y<<endl;
    for(;;)
    {
    ruch=getch();

    switch(ruch)
    {
        case 'w':
            if(y>1)
            y=y-1;
            break;
        case 'a':
            if(x>1)
            x=x-1;
            break;
        case 's':
            if(y<=15)
            y++;
            break;
        case 'd':
            if(x<=15)
            x++;
            break;
    }
        system("cls");
        cout<<"x="<<x; cout<<" y="<<y<<endl;

    }
    return 0;
}

wypisuje dobre połozenie ale nie wiem jak pokazać obiekt

0 głosów
odpowiedź 15 lipca 2016 przez event15 Szeryf (93,790 p.)

Wiem że podobny temat pojawił się na forum, jednak nie okazał się dla mnie pomocny.

To znaczy,  że nic z niego nie wyciągnąłeś? Nawet rysunki są w nim, nawet przykładowy kod. Ten sam język programowania.

Oś X i Y może być wyimaginowana, poza tym konsola przeciez posiada wysokość i szerokość, więc naturalnie masz obie te wartości. 

Podobne pytania

+1 głos
1 odpowiedź 1,541 wizyt
pytanie zadane 12 września 2015 w C i C++ przez C☺ndzi Stary wyjadacz (12,100 p.)
0 głosów
1 odpowiedź 600 wizyt
pytanie zadane 3 października 2016 w C i C++ przez Emil Panecki Bywalec (2,100 p.)
0 głosów
2 odpowiedzi 892 wizyt
pytanie zadane 5 listopada 2017 w C i C++ przez szym3ns Użytkownik (860 p.)

93,454 zapytań

142,449 odpowiedzi

322,718 komentarzy

62,833 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...