Samstag, 23. Juni 2012

Buchempfehlung: Dawson, Michael - Beginning C++ Through Game Programming (2010)

  • geeignet für: Anfänger
  • Sprache: Englisch
  • Erklärt alle für die Spieleprogrammierung relevanten Aspekte der C++-Programmierung sehr ausführlich und verständlich
  • Bietet anschauliche Beispiele aus dem Bereich der Spieleprogrammierung
  • umfangreich (ca. 400 Seiten)
ISBN: 978-1-435-45742-3 Preis: 27,70€

Montag, 18. Juni 2012

Verwendung von Variablen und Operatoren

Ein Programm welches nur Text ausgeben kann ist ziemlich langweilig, nicht wahr? Aus diesem Grund werde ich in diesem zweiten Tutorial zeigen, wie man mit seinem Programm rechnen kann.
Zunächst passiert eigentlich nichts neues, man muss lediglich den Header <iostream> einbinden, den Standard-Namensbereich festlegen und die main-Funktion aufrufen.

01: #include <iostream>
02:
03: using namespace std;
04:
05: int main()
06: {

Nun muss man sich überlegen, was man eigentlich zum rechnen benötigt. Selbstverständlich benötigt man zwei Operanden , einen Rechenoperator (+, -, *, /, %) und das "Gleichzeichen" ( = ).
Zunächst erstellt man sich 3 Variablen, zwei welche die Operanden speichern und eine welche das Ergebnis beinhaltet. Das hört sich jetzt vielleicht für einige kompliziert an, ist es aber keineswegs.

01: #include <iostream>
02:
03: using namespace std;
04:
05: int main()
06: {
07:     int op1;  //Operand 1
08:     int op2;  //Operand 2
09:     int erg;  //Ergebnis

Hier wurden 3 Variablen vom Typ int erstellt. Variablen vom Typ int können nur Ganzzahlen speichern, möchte man jedoch mit Dezimalzahlen rechnen, sollte man den Datentyp float oder double verwenden. Nun kann man aber noch nicht viel mit diesen Variablen anstellen, da ihnen noch keine Werte zugewiesen wurden. Dies geschieht mit Hilfe des Zuweisungsoperators ( = ). In diesem Beispiel wird die Anzahl der Pixel eines Monitors berechnet. Möchte man zum Beispiel wissen, wie viele Pixel ein 1680x1050 großer Monitor hat, so weist man den Operatoren die Werte für Höhe und Breite zu. Der Ergebnisvariablen weist man daraufhin das Ergebnis der Multiplikation beider Operatoren zu. Zum Schluss wird das Ergebnis ausgegeben.

01: #include <iostream>
02:
03: using namespace std;
04:
05: int main()
06: {
07:     int op1;  //Operand 1
08:     int op2;  //Operand 2
09:     int erg;  //Ergebnis
10:
11:     op1 = 1680;
12:     op2 = 1050;
13:
14:     erg = op1 * op2;
15:
16:     cout << "Der Bildschirm hat eine Auflösung von " << op1 << "x"
17:          << op2 << " das sind " << erg << " Pixel" << endl;
18: 
19:     return 0;
20: } 

Ihr fragt euch jetzt sicher, wo der Sinn dieses Programms liegt. Doch ist es sehr wichtig zu wissen, wie man in C++ rechnet, wenn man später komplexe Programme oder sogar Spiele programmieren will, auch wenn das in diesem Beispiel noch nicht erkenntlich wurde.

Sonntag, 10. Juni 2012

Ankündigung: Visual Studio Express 2012 for Windows Desktop

Entgegen den ursprünglichen Plänen Microsofts, ausschließlich eine kostenlose Express-Version des neuen Visual Studios 2012 für Anwendungen im Metro-Style bereitzustellen, wird nun doch eine kostenlose Express-Version für Desktop-Anwendungen erscheinen. Dies berichtete das Entwicklerteam von Visual Studio auf seinem Blog.
Die neue Version wird unter dem Namen Visual Studio Express 2012 for Windows Desktop erscheinen und die Programmiersprachen C++, C# und Visual Basic unterstützen. Darüber hinaus soll diese Version die aktuellsten Compiler und Entwicklungswerkzeuge beinhalten.
Mit dieser Masnahme reagiert Microsoft auf die Kritik vieler Entwickler, die für die Entwicklung von Desktop-Anwendungen nicht auf die kostenpflichtige Version des neuen Visual Studio 2012 zurückgreifen wollten.

Mittwoch, 6. Juni 2012

Tic Tac Toe

Heute stelle ich euch mein neustes Projekt vor. Diesmal handelt es sich um einen Klassiker der Spielgeschichte :) . Tic Tac Toe war lange Zeit das beste Mittel gegen Langeweile, vor Allem während den Pausen in der Schule. Nun kehrt es zurück auf euren Bildschirm. Viel Spass damit!

Update: 02.03.2013 - Version für Linux hinzugefügt

Downloads:
Download 1 (Programm Windows)
Download 2 (Programm Linux)
Download 3 (Sourcecode Windows)
Download 4 (Sourcecode Linux)

Freitag, 1. Juni 2012

Zahlensysteme (Dezimal, Hexadezimal und Binär)

Einleitung

Es gibt viele verschiedene Systeme um bestimmte Zahlen darzustellen. Das bekannteste ist wohl das Dezimalsystem, in dem jede beliebige Zahl mit Hilfe der Ziffern 0-9 dargestellt werden kann. In der Programmierung trifft man jedoch auch häufig auf andere Arten der Zahlendarstellung, wie dem Hexadezimalsystem oder dem wohl wichtigsten in der Computerwelt, dem Binärsystem


Dezimalsystem

Basiszahlen         : 10 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
Zahlendarstellung   : 1, 234, 5.6 ...
Berechnungsbeispiel : 234
                      2*102
                    +  3*101
                    +   4*100
                    = 200 + 30 + 4
                    = 234 

Hexadezimalsystem

Basiszahlen         : 16 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F)
                      A = 10, B = 11, C = 12, D = 13, E = 14, F = 15
Zahlendarstellung   : 12, AB, D3F ...
Umrechnungsbeispiel : D3F
                      D*162
                    +  3*161
                    +   F*160
                    = 12*256 + 3*16 + 15*1
                    = 3072 + 48 +15
                    = 3135

Binärsystem

Basiszahlen         : 2 (0, 1)
Zahlendarstellung   : 10, 0101, 1001 ...
Umrechnungsbeispiel : 1010
                      1*23
                    +  0*22
                    +   1*21
                    +    0*20
                    = 1*8 + 0*4 + 1*2 + 0*1
                    = 8 + 0 + 2 + 0
                    = 10
Wie euch bestimmt aufgefallen ist gibt es eine bestimmte Regel, mit welcher man jede beliebige Zahl eines Zahlensystems in eine Dezimalzahl umrechnen kann. Diese möchte ich hier kurz voretsllen.

Dezimalzahl = [Ziffer] * [Basiszahl][Exponent]
Der Exponent bildet sich aus der Anzahl der Ziffern einer Zahl. Es gilt:
Exponent -> ...[4][3][2][1][0].[-1][-2][-3]...
(in den eckigen Klammern steht der Exponent der Ziffern vor und hinter dem Komma)

Das ist zwar sehr hilfreich, aber wie berechnet man eine Dezimalzahl in eine Binär oder Hexadezimalzahl um, und wie bestimmt man die Binärzahl einer Hexadezimalzahl und andersrum? Dies werde ich nun erklären.

Dezimal -> Hexadezimal

Beispiel:

Zahl = 1234
Basiszahlen (Hexadezimal) = 16

1234 / 16 = 77      Rest:   2
    77 / 16 =   4      Rest: 13
      4 / 16 =   0      Rest:   4

Nun muss man die Rest-Ziffern von unten nach oben lesen, aus zweistelligen Zahlen werden bekanntlich Buchstaben, also ist der

Hexadezimalwert = 4D2

Dezimal -> Binär

Beispiel:

Zahl = 1234
Basiszahlen (Binär) = 2

1234 / 2 = 617     Rest: 0
  617 / 2 = 308     Rest: 1
  308 / 2 = 154     Rest: 0
  154 / 2 =   77     Rest: 0
    77 / 2 =   38     Rest: 1
    38 / 2 =   19     Rest: 0
    19 / 2 =     9     Rest: 1
      9 / 2 =     4     Rest: 1
      4 / 2 =     2     Rest: 0
      2 / 2 =     1     Rest: 0
      1 / 2 =     0     Rest: 1

Auch hier müssen die Rest-Ziffern wieder von unten nach oben gelesen werden. Die Dezimalzahl 1234 ergibt im Binärsystem also

Binärwert = 10011010010

Hexadezimal -> Binär


0 = 0000    6 = 0110    C = 1100
1 = 0001    7 = 0111    D = 1101
2 = 0010    8 = 1000    E = 1110
3 = 0011    9 = 1001    F = 1111
4 = 0100    A = 1010
5 = 0101    B = 1011

Beispiel:

Zahl = B7

B = 1011
7 =  0111
Binärwert = 10110111

Binär -> Hexadezimal

Zahl = 1010 0101 1101
1010 = A
0101 = 5
1101 = D

Hexadezimalwert = A5D