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

Kilka pytań dotyczące buildera C++.

VPS Starter Arubacloud
0 głosów
398 wizyt
pytanie zadane 26 października 2015 w C i C++ przez Hadamalush Obywatel (1,880 p.)
Witam. Proszę odpowiedzieć na moje pytania:

1. Czy da się wstawić w Builderze 6 zdjęcię bez tła? Formatu PNG nie da się wstawić ,a jeżeli robię postać i chcę tło wstawić to tło od postaci musi być przezroczyste. Jeżeli da się to jak?

2. Jak zamienić w builderze zmienną o typie danych AnsiString ,by wszystkie litery byly duze/male. W codeblocku była funkcja transform(zmienna.begin(),zmienna.end(),zmienna.begin(),::toupper); probowalem w builderze uzyc jednak nie działało ,nawet jak dodałem bibliotekę <algorithm>.

3.Jak zrobić endlajna(enter) w AnsiStringu. Np. Jeżeli Label1->Caption ma więcej znakow niz 50 to zrob enter i pisz w nastepnej lini.

4. W grze 2d jest do ruchów postaci wykorzystywane SPRAJTY (chyba) ,a w 3d też sprajty? Jeżeli tak to ,to oznacza ,że musi być mnóstwo zdjęć do stworzenia gry mmorpg? :P

Proszę o odpowiedź. Pozdrawiam :)

3 odpowiedzi

+1 głos
odpowiedź 26 października 2015 przez Radfler VIP (101,030 p.)
wybrane 26 października 2015 przez Hadamalush
 
Najlepsza

1. Jeżeli chodzi o PNG, to przeczytałem gdzieś, że jest typ TPNGImage, który takie obrazy PNG przechowuje.

2. AnsiString jest trochę "ubogim" jeżeli chodzi o funkcje składowe typem, zakładam że trzeba zrobić tak (nie daję gwarancji, że zadziała):

#include <algorithm>
#include <cctype>
#include <cstring>

AnsiString text = "Jakiś tekst";

char* cText = text.c_str(); // Pomocnicza zmienna
std::transform(cText, cText + std::strlen(cText), cText, static_cast<int(&)(int)>(std::toupper));

EDIT: Krawiec91 dał Ci odpowiedź (chociaż mój sposób też powienien działać :P). Co do AnsiStringów, tu masz informację na temat niego (niezbyt dokładne, ale zawsze jakieś: http://www.functionx.com/bcb/topics/strings.htm.

3. Dopisz do AnsiStringu znak '\n' (albo '\r').

4. Tutaj Ci nie odpowiem :v

No tyle, mam nadzieję że podziała! :)

komentarz 26 października 2015 przez Hadamalush Obywatel (1,880 p.)

Dzięki :) A wiesz może jak wstawić te TPNGImage? Bo pilnie potrzebuje :P

komentarz 26 października 2015 przez Radfler VIP (101,030 p.)
Musiałbyś pobrać ten komponent osobno z internetu. Szukałem na jakiś forach, jednak z tego co przeczytałem, nie jest on dostępny dla C++ Builder 6 :/
komentarz 27 października 2015 przez maly Nałogowiec (37,190 p.)
static_cast<int(&)(int)>(std::toupper)

Co to?

 

Niewiem czy ktokolwiek wie o tym że bezpośrednie modyfikowanie bufora w AnsiString może dać nieoczekiwane rezultaty.

Jaki tekst będzie w 'tekstA' przy użyciu takiej funkcji?

AnsiString toUpper(AnsiString text)
{
	char* cText = text.c_str(); // Pomocnicza zmienna
	std::transform(cText, cText + std::strlen(cText), cText, std::toupper);

    return AnsiString(cText);
}

AnsiString tekstA = "ala";
AnsiString tekstB = toUpper(tekstA);

 

komentarz 27 października 2015 przez Radfler VIP (101,030 p.)

Ten static_cast to wyłuskanie konkretnego przeładowania danej nazwy: http://en.cppreference.com/w/cpp/language/static_cast. W przestrzeni nazw std nazwa toupper/tolower jest przeładowana.

Modyfikowanie bufora AnsiStringu powinno działać, gdyż funkcja AnsiString::c_str zwraca char*, czyli modyfikowalny cstring. Ewentualnie modyfikacja bufora może być niebezpieczna, gdy modyfikujemy AnsiString za pomocą funkcji składowych klasy.

komentarz 27 października 2015 przez maly Nałogowiec (37,190 p.)

Wiem czym jest static_cast nierozumiem konkretnie co i po co robi ten.

Cytat z dokumentacji odnośnie c_str:

The c_str method is intended primarily for reading the value of the AnsiString. To modify the string’s value, use the [] operator

komentarz 27 października 2015 przez Radfler VIP (101,030 p.)

Hmm.. nie znam dokumentacji AnsiStringa, strzelałem że taka możliwość istnieje na podstawie zwracanego typu. Jak chcesz wyjaśnień odnośnie static_cast w tym kontekście, wejdź TU i zjedź do sekcji Notes.

+2 głosów
odpowiedź 26 października 2015 przez furas Maniak (53,800 p.)

4. W starych grach FPS jak Duke Nukem 3D świat był zbudowany z obiektów 3D (i nałożonych tekstur) ale przeciwnicy i wybuchy były z płaskich bitmat (SPRITE). W nowszych grach postacie przeważnie robione są też z obiektów 3D. 

W starych grach jak Warcraft 1, 2 czy Starcraft 1 wszystko było z bitmap - teren, budynki, postacie, pojazdy, wybuchy, itd. Każda rzecz musiała być przez kogoś narysowana pod każdym kątem. 

 

+1 głos
odpowiedź 26 października 2015 przez Krawiec91 Pasjonat (19,600 p.)
Pyt.2 :Do zamiany liter w AnsiStringu na wielkie używa się metody UpperCase(), do zamiany na liter na małe, metody LowerCase(). Są to metody klasy AnsiString.
komentarz 26 października 2015 przez Hadamalush Obywatel (1,880 p.)

Zrobiłem coś takiego:

AnsiString napis;
   napis=Label2->Caption;
   LowerCase(napis);

Label3->Caption=napis;

Niestety nie działa:/ Litery takie same nie zmieniaja sie na małe.

komentarz 26 października 2015 przez Krawiec91 Pasjonat (19,600 p.)

Label2 i Label3 bedą przechowywać ten sam string. Zamiast ostatnich dwóch linii, zrób coś takiego, powinno być git.

Label3->Caption=LowerCase(napis);


 

komentarz 26 października 2015 przez Hadamalush Obywatel (1,880 p.)
Działa ,dziękuję :)

Podobne pytania

0 głosów
1 odpowiedź 93 wizyt
pytanie zadane 4 marca 2016 w C i C++ przez dartespl Użytkownik (830 p.)
0 głosów
1 odpowiedź 591 wizyt
pytanie zadane 8 grudnia 2015 w C i C++ przez mikra25 Użytkownik (580 p.)
+1 głos
1 odpowiedź 307 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...