Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] c++ co użyć


Rekomendowane odpowiedzi

Opublikowano

Elo, chciałem napisać gre typu arkanoid.Znam jakieś tam podstawy C++.

 

Co moge użyć i jak wgl. napisać coś takiego?Nie oczekuje gotowych kodów, tylko podpowiedzi jak takie coś wykonać, jakiej biblioteki użyc(?) itd. ?

 

Pozdr.

Opublikowano

Do grafiki SFML/SDL/OpenGL

 

Gre musisz zaplanować samemu i samemu przemyśleć jak ją wykonać. Jak nie dajesz rady, to znaczy, że jesteś jeszcze nie gotowy. Przemyśl Najpierw co najmniej powierzchownie, rozpisz, a pytaj o bardziej konkretne problemy.

Weź kartkę, rozpisz funkcjonalności, zależności, co się ma w grze znajdować i spróbuj to napisać.

Opublikowano

Właśnie o to chodzi że nie wiem co powinno się tam znajdować żeby to działało;/MÓgłbyś odesłać mnie do jakis tutoriali?Jakieś suche kursy już przeszedłem ale tam nic konkretnego na temat takich rzeczy nie ma.

Opublikowano

Po prostu tworzysz okienko o wymiarze o jaki ci chodzi a następnie tworzysz menu, wczytujesz mapy czy co ci tam jest potrzebne. Na przykład:

1. Inicjacja biblioteki, tworzenie okienka

2. Wyświetlenie menu na podstawie spritów i ich położenia

3. Sprawdzanie, czy nie został naciśnięty np. przycisk singleplayer

4. Jeśli tak to wczytujesz mapę z pliku (biblioteka fstream) i ją wyświetlasz kawałek po kawałku. To samo z obiektami ruchomymi itp.

5. Sprawdzanie przycisków itd. itp.

userbar.png
Opublikowano

Może trochę Ci pomogę.

Głowne założenia gry to zbijanie prostokątów kulką. Zależności są tylko między kulką i prostokątami do zbijania, oraz między kulka i paletką.

W każdym ticku gry (powiedzmy 20 na sekunde, wystarczy. Oczywiście renderujesz w wolnym czasie.) sprawdzasz kolizje między prostokątami do zbijania (AABB collision, ewentualnie circle-rect/circle-box, http://screenshooter.net/6191878/pjiobkn moje wypociny, ewentualnie szukasz w necie.), jeśli wystąpi to usuwasz prostokąt z gry, score++ etc, oraz odbijasz kulke (jeśli kolizja zaszła z boku to odwracasz predkość w poziomie, analogicznie dla pionu). Później sprawdzasz kolizję między paletka a kulką i odbicie według tego jak sobie to wymyślisz.

Co do menu i innych przerywników, to zajmij się tym NA KOŃCU. Nie napiszę o tym nic, bo akurat materiałow dotyczących robienia graficznego menu chyba w necie pod dostatkiem.

 

@up. masz zaincludowane tylko SDL_image. Nie znam SDLa, ale wydaje mi się, że do tego jest inny moduł

Opublikowano

A pobrałeś w ogóle tę bibliotekę i dałeś tam gdzie trzeba? :D

Jak tak to na początku powinieneś jeszcze dodać:

 

#include <SDL/SDL.h>
#include <SDL/SDL_image.h>

//albo 

#include "SDL/SDL.h"
#include "SDL/SDL_image.h"

// zależy gdzie ją wstawiłeś

Polecam http://lazyfoo.net/SDL_tutorials/ tu masz wszystko o SDL napisane.

userbar.png
Opublikowano

Może trochę Ci pomogę.

Głowne założenia gry to zbijanie prostokątów kulką. Zależności są tylko między kulką i prostokątami do zbijania, oraz między kulka i paletką.

W każdym ticku gry (powiedzmy 20 na sekunde, wystarczy. Oczywiście renderujesz w wolnym czasie.) sprawdzasz kolizje między prostokątami do zbijania (AABB collision, ewentualnie circle-rect/circle-box, http://screenshooter.net/6191878/pjiobkn moje wypociny, ewentualnie szukasz w necie.), jeśli wystąpi to usuwasz prostokąt z gry, score++ etc, oraz odbijasz kulke (jeśli kolizja zaszła z boku to odwracasz predkość w poziomie, analogicznie dla pionu). Później sprawdzasz kolizję między paletka a kulką i odbicie według tego jak sobie to wymyślisz.

Co do menu i innych przerywników, to zajmij się tym NA KOŃCU. Nie napiszę o tym nic, bo akurat materiałow dotyczących robienia graficznego menu chyba w necie pod dostatkiem.

 

@up. masz zaincludowane tylko SDL_image. Nie znam SDLa, ale wydaje mi się, że do tego jest inny moduł

Dzięki to mi sporo pomoże.

Co do SDLA to nawet jak walne SDL.h to nadal jest to samo;/

 

Ogólnie na początku nie znajdowało mi SDL'a później znalazłem na google rozwiązanie z jakimiś dodatkowymi plikami i tym SDL_image.Pisali ze powinienem teraz użyć SDL_image i powinno być ok a tu mi wychodza jakieś zryte błędy

Opublikowano

Źle zaincludowałeś :) Co do SDL_image to dodaje ci tylko dodatkowe funkcje graficzne, samo SDL jest konieczne.

userbar.png
Opublikowano

Co do samego zabrania się:

 

Najpierw naucz się teorii. Musisz wiedzieć, jak wszystko jest określane, co jest możliwe, co na co się dzieli i jak się to wszystko je.

Następnie narysuj sobie uproszczony plan na kartce. Do każdego elementu porozpozpisuj odnośniki, opisz, z czego będą się składać [...]. Później, weź się za programowanie elementów po kolei. Biorąc się od 'podstaw', przez szczegóły po wykończenia. C++ jest na tyle dobre, że możesz wszelkie elementy składać praktycznie osobno.


 

Opublikowano

Słyszałem że do gier 2d nadaje sie również allegro http://cpp0x.pl/kurs...egro-4-x-C /21

Nadać się nadać, ale uważam, że są lesze biblioteki graficzne. Choćby takie jak wymieniłem wyżej, SDL/SFML/OpenGL. Allegro ma często problemy ze zgodnością (dużo razy mi się to przytrafiało, że ktoś nie mógł odpalić, z niewiadomych powodów) oraz nie ma orientowanego obiektowo API

Opublikowano

Nadać się nadać, ale uważam, że są lesze biblioteki graficzne. Choćby takie jak wymieniłem wyżej, SDL/SFML/OpenGL. Allegro ma często problemy ze zgodnością (dużo razy mi się to przytrafiało, że ktoś nie mógł odpalić, z niewiadomych powodów) oraz nie ma orientowanego obiektowo API

a tak z ciekawości zapytam pisałeś w wersji 4,coś czy 5,coś? bo jeśli tak jest również w nowej wersji to chyba odpuszczę sobie naukę tej biblioteki

Opublikowano

pisałem w wersji 4.2.0, wersja 5 może być lepiej zorganizowana i mniej błędogenna, ale nadal brakuje mi w niej orientowanego obiektowo API

Opublikowano

Pierwszy problem.

Kompletnie nie mam pojęcia jak mam wprawić obiekt(załóżmy głowa węża-koło z painta xD).

Ogólnie postanowiłem dojść do snake i podzieliłem sobie nauke i dojście do celu na etapy:

1)napisać cokolwiek co wyświetla obrazek

2)Wprawdzić cokolwiek w jakikolwiek ruch:

 

 

include "SDL/SDL.h"
SDL_Surface * ekran = NULL;
SDL_Surface * obraz = NULL;
SDL_Rect start[1];
SDL_Rect docel[1];
int i;
int main(int argc, char * args[])
{
SDL_Init( SDL_INIT_EVERYTHING );
ekran = SDL_SetVideoMode( 900, 600, 32, SDL_SWSURFACE );
obraz = SDL_LoadBMP( "tak.bmp" );
for(int i = 1; i<=1000; i++)
{
start[1].x = 200 + i;
start[1].y = 0 + i;
start[1].h = 200 + i;
start[1].w = 200 + i;
docel[1].x = 0 + i;
docel[1].y = 0+ i;
docel[1].h = 200 + i;
docel[1].w = 0 + i;
SDL_BlitSurface( obraz,& start[1], ekran,& docel[1]);
SDL_Flip(ekran);
SDL_Delay(10);
}
SDL_Flip( ekran );
SDL_Delay(5000);
SDL_Quit();
return 0;
}

 

 

 

3)Zrobić żeby jakiś pojedyńczy obiekt "szedł" w jakikolwiek kierunek.( w tym wypadku głowa węża ).Mógłby mnie ktoś nakierować jak to zrobić?Próbowałem coś kminić ale nie wychodzi mi, nie mam kompletnie pomyśłu.Prosiłbym o sposób na zrobienie tego lub jakiś pseudokod do analizy.

Z góry dzięki;)

Opublikowano

Pętla while, poszukaj info o licznikach, a jeśli chcesz aby działo się to np. po naciśnięciu przycisku to polecam naukę o wydarzeniach i ich obsłudze w SDL.

Natomiast co do twojego kodu to nie mam pojęcia po jakiego grzyba deklarujesz tablicę o rozmiarze 1. To totalnie bez sensu.

Zmienna "i" deklarowana na początku też bez sensu, to jest C++ a nie C.

 

No i czegoś takiego nie testowałem, ale wydaje mi się, że w "docel.w = 0 + i" powinno być "docel.w = 200 + i", bo tak to obrazek może być cokolwiek wąski...

Sprawdź to i napisz dokładnie co się dzieje na ekranie bo nie za bardzo mam ochotę sam to testować ^^ Pozdrawiam.

userbar.png
Opublikowano

Pętla while, poszukaj info o licznikach, a jeśli chcesz aby działo się to np. po naciśnięciu przycisku to polecam naukę o wydarzeniach i ich obsłudze w SDL.

Natomiast co do twojego kodu to nie mam pojęcia po jakiego grzyba deklarujesz tablicę o rozmiarze 1. To totalnie bez sensu.

Zmienna "i" deklarowana na początku też bez sensu, to jest C++ a nie C.

 

No i czegoś takiego nie testowałem, ale wydaje mi się, że w "docel.w = 0 + i" powinno być "docel.w = 200 + i", bo tak to obrazek może być cokolwiek wąski...

Sprawdź to i napisz dokładnie co się dzieje na ekranie bo nie za bardzo mam ochotę sam to testować ^^ Pozdrawiam.

Robie błędy-początkujacy jestem w końcu;_;

Programik robi to co chciałem więc z tym nie ma problemu.

Opublikowano

każdy robi błędy, różnica polega na tym kto potrafi rozwiązać je samemu - wszystko znajdziesz w google - a kto leci z tym na forum.

Pisze boty do gier WWW na zlecenie.

Opublikowano

każdy robi błędy, różnica polega na tym kto potrafi rozwiązać je samemu - wszystko znajdziesz w google - a kto leci z tym na forum.

Nie oczekuje gotowca tylko wytłumaczenia a przynajmniej nakierowania jak cos takiego zrobić.Od tego jest forum

Opublikowano

If srcrect is NULL, the entire surface is copied. If dstrect is NULL, then the destination position (upper left corner) is (0, 0).

SDL_FillRect(obraz , NULL , 0x221122); //aby stary obraz wyczyścić (zapelnic innym kolorem) bo z tego co pamiętam to nie mozna przesuwać obiektów, jedynie narysować od nowa

SDL_BlitSurface( obraz,NULL, ekran,& docel[1]);

 

http://www.libsdl.org/docs/html/

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...