Geh zum Tierarzt, auf dieser Seite ist sowieso jeder inkompetent in Sachen Medizin. Wende dich an einen experten, so schnell wie möglich!

...zur Antwort

Was ist nur falsch mit dir? Verwende einfach ein Shell Script so wie jeder andere normale Mensch auch. Meine Güte ihr Leute fuckt mich wirklich ab.

...zur Antwort

Ich kenne mich zwar nicht mit Xamarin aus aber aus meiner Erfahrung mit GUI Programmierung weiß ich, das du lieber einen Layoutmanager verwenden solltest der deine Widgets dann automatisch anordnet um deine Anwendung skalierbar zu machen. Hier wäre ein guter Anfang https://developer.xamarin.com/guides/xamarin-forms/user-interface/layouts/

...zur Antwort

WinForms ist schon seit Ewigkeiten deprecated und sollte deshalb nicht mehr verwendet werden. Ebenfalls erschließt sich mir nicht der Sinn dahinter ein Spiel in einem GUI Toolkit zu schreiben, es sei denn natürlich du meinst sowas wie PictureBox framebuffer software rendering.

Ich würde dir zum schreiben eines Tetris klons raten.

...zur Antwort

fopen ist noch ein überbleibsel der C (nicht C++) standardbibliothek und ist daher nicht idiomatisches C++. Der idiomatische Weg eine Datei zum entweder lesen, oder schreiben zu öffnen sieht so aus:

#include <fstream>
int main(int argc, char **argv){
//entweder du seperariest jeweils den input und output stream oder du verwendest den generellen fstream
std::ofstream output("datei.txt");
std::ifstream input("datei.txt"); //Eine möglichkeit eine datei zu öffnen
input.open("datei.txt"); //zweite möglichkeit eine datei zu öffnen

if(input.is_open()){
...
}
Ein und ausgabe erfolgt genauso wie mit std::cout und std::cin
alternativ kann man ebenfalls zum zeilenweisen lesen einer datei std::getline() verwenden

input.close(); //schließen nicht vergessen
return 0;
}
...zur Antwort
C++ Inhalt vom String in einen anderen Kopieren

Hi, ich bräuchte Hilfe bei einer Funktion, unswar soll sie den Inhalt in einen anderen Kopieren, das Problem ist das er automatisch in einen anderen String Kopieren soll.. Das heißt z. B :

string a1; string a2;

Er soll halt automatisch den String a1 befüllen wenn er voll ist, soll er einen anderen Inhalt in den zweiten String Kopieren ich hab das so gemacht das er die Zahl hinter dem a erhöht aber das Problem ich weiß nich wie er die Strings befüllen soll ... sry falls das ein bisschien verwirent kling aber ich kann es einfach nicht erklären :/

Code:

long int hauptzahl = 1; //Zum eintragen der String damit der Typ da unten weiß wo er was eintragen muss... xD !

string ZahlZWSP; string welches;

string hauptstring = "a"; //Hier wird bestimmt in welchen String eingetragen wird string a1; string a2;

void KeyGen() // Hier wird der Schlüssel erstellt ! {

ostringstream convert2;
convert2 << hauptzahl;
ZahlZWSP = convert2.str();
hauptstring += ZahlZWSP;

cout << "ZahlZWSP   " << ZahlZWSP << endl;
cout << "hauptstring    " << hauptstring << endl;

hauptzahl++;

ZahlZWSP.erase(1, 2);
hauptstring.erase(1, 2);

string string1;
if (durchlauf < lange)
{
    hauptstring.substr();   
    welches = hauptstring; //Hier ist das Problem er soll halt einfach den Inhalt der Variable welches in die Strings kopiert wird  nur er kopiert das halt in den String "welches" ... ich hoffe ihr versteht es, also gibts nicht irgendeine andere möglichkeit damit er den Inhalt ausließt und in die Variable schreibt die im Inhalt ist ?


    hauptspeicher.erase();
    codespeicher.erase();
}


 

emilia();

}

PS: Die ist nur ein Teil des Programms die Variablen deklariere ich euch oben damit ihr wisst was es für Typen sind. Ich hoffe ihr könnt "<<" hier gut lesen :/

Danke für jede Hilfe!

...zum Beitrag

Dies ist ganz einfach möglich mit der append() funktion.

std::string a = "Hallo ";
std::string b = "Welt!";
a.append(b); //a == "Hallo Welt!"
...zur Antwort

Also wenn man ganz semantisch sein will kann eine Funktion maximal einen Wert zurückgeben, jedoch gibt es ein paar "tricks" wie man dies umgehen kann. Wenn man eine Funktion haben will welche mehr als einen integralen datentypen zurück gibt und das jedes mal so kann man einfach ein struct erstellen welches die benötigten daten beinhaltet und dies dann zurückgeben. Hat man jedoch eine funktion welche entweder einen oder einen anderen, jedoch nicht beide gleichzeitig zurückgibt, so empfiehlt es sich ein union zu verwenden, da ein union in solchen Fällen speichereffizienter ist als ein struct da ein union immer nur maximal so viel speicher belegt wie sein größter member. Hat man jedoch eine Funktion welche alterierende Datentypen hat so kann man, entweder, falls man die boost bibliothek verwendet ein boost::any zurückgeben, oder falls man kein boost verwendet einen void *

//Beispiel 1
struct koordinaten {
//struct ist in C++ der klasse ähnlich mit dem unterschied das alle member standardmäßig public sind
//C++ unterstützt keine C-Style structs
koordinaten(int x, int y) : _x(x), _y(y) {}
int _x;
int _y;
};
koordinaten x(int x, int y){
koordinaten temp(x, y);
return temp;
}
//Beispiel 2
union my_return_type {
koordinaten k;
int hoehe;
};
my_return_type x(int x, int y, int h){
my_return_type temp;
if(x == 0 && y == 0){
temp.hoehe = h;
}else {
temp.k._x = x;
temp.k._y = y;
}
return temp;
}
//Beispiel 3
void *x(int x){
int a = 10;
double b = 3.14;
std::string c = "";
switch(x){
case 1:
return (void *)&a;
break;
case 2:
return (void *)&b;
break;
case 3:
return (void *)&c;
break;
}
...zur Antwort

Statt sleep() zu verwenden, was eine POSIX funktion ist und daher nicht auf allen Systemen verfügbar ist solltest du lieber folgendes equivalent benutzen welches aufgrund des C++11 standards auf jeden System verfügbar sein wird.

#include <thread>
#include <chrono>
int main(int argc, char **argv){
std::this_thread::sleep_for(std::chrono::milliseconds(5000));
return 0;
}
...zur Antwort

Dafür gibt es zwei Wege:

Der erste ist du tauscht den datentyp int von i durch void * aus.

Die zweite Möglichkeit ist die verwendung eines Template

//erste möglichkeit
class my_class {
public:
int my_int;
};
int x(void *i){
my_class local_instance = *(my_class *)i;
local_instance.i = ...
}
int main(int argc, char **argv){
my_class main_instance;
x((void *)&main_instance);
return 0;
}
//zweite möglichkeit
class my_class {
public:
int my_int;
};
template<typename T> decltype(T) x(decltype(T) &i){
i.my_int = ...
}
int main(int argc, char **argv){
my_class main_instance;
x<main_instance>(main_instance);
return 0;
}
...zur Antwort

Ob es sich lohnt mit Xamarin und C# (oder VB.net oder F# und die vielzahl an "inoffiziellen" sprachen welche ebenfalls zu .NET bytecode kompillieren, beispielsweise Clojure über ClojureCLR) apps zu entwickeln kann man pauschal nicht sagen da dies von einer vielzahl an Faktoren abhängt. Einer dieser Faktoren ist beispielsweise der Kostenfaktor, der je nach der eigenen finanziellen Situation, ein ganz klarer Prohibitivfaktor sein kann. Wenn die Kosten nicht die Hauptrolle spielen so muss man ebenfalls in betracht ziehen, das man trotz Xamarin, es sei denn man verwendet Xamarin.Forms, dennoch platform spezifischen code schreiben muss, beispielsweise für die UI, und das für jede Platform für die man die App entwickelt. Selbst wenn man sich entschließt Xamarin.Forms zu verwenden sollte man, wenn man möchte das die eigene App anklang findet, dennoch platform spezifischen UI code schreiben da im Grunde jede relevante mobile platform ihre eigenen UI Paradigmen hat welche ein potenzieller Benutzer jener App von der App erwartet. Ein weiterer Faktor welcher für Xamarin und C# sprechen würde währe eine eventuelle "Sprachfäulle", d.H. Man will oder kann nicht die Zeit aufwenden um für jede Platform die Vorherrschende und "Vorgeschriebene" Sprache zu lernen. welche z.B. für IOS Objective-C und/oder Swift, für Android Java und für Windows Phone C# währe. Abhängig von den Platformen für die man entwickeln möchte ist die jedoch meiner Ansicht nach kein entscheidender Punkt da z.B. Java C# sehr ähnlich ist (was sich aus der Historie von C# ergiebt, welche, soweit ich mich recht erinnere, früher als eine proprietäre Java implementierung seitens Microsoft namens J++ begann, dann eingestellt und durch J++ ersetzt wurde, was dann durch C# 1.0 ersetzt wurde). Allgemein ist es nicht soo schwer eine andere Programmiersprache zu lernen wenn man schon eine beherrscht (und mit beherrschen meine ich nicht einfach nur können sondern vollständig alle features beherrschen zu können), vorrausgesetzt die Sprache die man lernen möchte verwendet das selbe Paradigma wie die Sprache mit der man schon vertraut ist, was bei Java und C# durch die gegenseitige verwendung des objektorientierten Paradigmas gegeben ist. Solltest du jedoch, sagen wir mal, clojure lernen wollen ohne mit dem funktionalem Paradigma vertraut zu sein wirst du erheblichere Probleme haben als jetzt mit C# Kentnissen Java zu lernen da dies im Grunde, jedenfalls auf einem idiologischem Niveau, im Grunde nur eine Syntax transformation ist. Glücklicherweise sind alle prävalenten Sprachen welche von den relevanten mobilen Platformen verwendet werde Objektorientiert was bedeutet das man sein Wissen über Objektorientierung größtenteils 1:1 anwenden kann was einen Umstieg auf diese Sprache immens erleichtert, ja fast schon trivial macht. Meiner Ansicht nach ist die größte Hürde beim schreiben von cross-platform apps jedoch nicht die sprachbarriere sondern das erlenen und behersschen der jeweiligen APIs. Eine Sprache ist schnell gelernt, manchmal in einer kurzen Zeit schon gemeistert aber das lernen der jeweiligen APIs dauert im Vergleich dazu ewigkeiten. Und hier komme ich nun zum springenden Punkt: Xamarin wird dir, meines Wissens nach, das erlenen der platform spezifischen APIs nicht ersparen weshalb ich dir definitiv zu nativen apps rate. Der einzige positive Aspekt welchen ich Xamarin abgewinnen kann ist das man die core-logic in einer einzigen Sprache auf allen Platformen verwenden kann, jedoch ist dies auch gegeben wenn man die core-logic in C++ schreibt welches kostenlos auf allen Platformen zur verfügung steht

...zur Antwort

sleep ist eine POSIX-funktion, d.H. sie ist standardmäßig nicht auf Windows systemen implementiert. Ich gehe mal davon aus das du einen einigermaßen aktuellen C++ compiler verwendest welcher C++11 unterstützt weshalb ich dir zu std::this_thread::sleep_for() rate: Dafür musst du den thread header einbinden

#include <thread>
#include <chrono>
int main(int argc, char **argv){
std::this_thread::sleep_for(std::chrono::seconds(5));
ODER
std::this_thread::sleep_for(std::chrono::milliseconds(5000));
return 0;
}
...zur Antwort

Wenn du dich nur "ein Wenig" in C++ auskennst, wird das nicht ausreichen. Ich persöhnlich bin DirectX (Ich nehme mal an das du eigentlich Direct3D meinst da DirectX weit mehr als nur Direct3D umfasst) nicht mächtig, jedoch kenne ich mich gut mit Grafikprogrammierung unter OpenGL und einem selbstgeschriebenem Softwarerenderer via GDI+ und Framebuffer unter Linux aus. Ich kann dir aus Erfahrung heraus garantieren das wenn du der WINAPI nicht mächtig bist und dich nicht mit den integranten details der C (nicht zwingend C++) programmiersprache bestens auskennst du mit sicherheit scheitern wirst. Direct3D zählt mit den zu abstand schwierigstens APIs welche es gibt. Dazu kommt noch, das die Spieleprogrammierung, zumindestens in 3D, weit mehr und vorallem kompliziertere Mathematik erfordert als das was man in der Schule lernt (z.B. Dynamic Lights via einem raycasting ähnlichem verfahren). 2D währe noch mit der Mathematik, welche man in einem Gymnasium lernt, machbar. 2D und 3D sind nicht inhärent so verschieden wie sie auf den ersten blick erscheinen, zumindestens in der implementation nicht da, wenn man 2D in einer 3D engine machen will man einfach eine der Vektorkomponenten (meistens die depth-komponente) einfach konstant macht. Bevor du dich an Direct3D wagst, solltest erstmal C und C++ und die WINAPI erstmal nahe zu perfekt beherrschen bevor du dich an DirectX wagst. Ich würde dir statt eines Buches einfach die Direct3D Dokumentation im MSDN empfehlen, die reicht aus. Statt Direct3D würde ich dir jedoch zu OpenGL raten da OpenGL (zumindestens modernes OpenGL ohne die fixed function pipeline) meiner Meinung nach nicht nur einfacher, sondern auch Leistungstärker ist (siehe Compute Shaders) als Direct3D. Ebenfalls ist OpenGL portabler als Direct3D und läuft auf allen relevanten Platformen (Windows, Linux, Mac, IOS, Android, etc...). Einen kleinen einblick in die OpenGL programmierung erhällst du hier: https://open.gl/

...zur Antwort

Um ehrlich zu sein solltest du es mit der Spieleentwicklung sein lassen wenn du der Meinung bist, dass du dazu ein Buch benötigst. Dies hat den Grund das Leute welche ein Buch benötigen meist (nicht immer, aber meist) weder die Grundlagen der Sprache beherrschen noch die Notwendigen Mathematischen kenntnisse besitzen welche die Entwicklung eines Spiels erfordert.

...zur Antwort

Im normalfall nicht, es sei denn du verwendest C++/CLI

...zur Antwort