|
You last visited: Today at 00:21
Advertisement
C++ Dark GDK Problem
Discussion on C++ Dark GDK Problem within the C/C++ forum part of the Coders Den category.
01/20/2013, 19:05
|
#1
|
elite*gold: 35
Join Date: Jun 2009
Posts: 966
Received Thanks: 73
|
C++ Dark GDK Problem
Hallo, hab mir was zusammen gecodet, woraus irgendwann mal ein 2D Jump'n'run werden soll, IRGENDWANN vielleicht mal, weil viel ist davon noch nicht da und ich bekomm jetzt schon Probleme. Aaalso, ich verwende Visual Studio Express 2008 und Dark GDK, hab an ner Vorlage bisschen rumgebastelt und in meinem Code steht jetzt:
PHP Code:
if (dbMouseClick == 1) jump(2, 20);
Laut documentation gibt die Funktion dbMouseClicke einen Integer, je nachdem ob und welche Taste gedrückt wird, 0 bei keine, 1 bei der linken, usw. nur beschwert sich der Compiler jetzt.
Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
/Edit: Hab den Fehler gefunden, dbMouseClick funktioniert jetzt nur meine selbst geschriebene Funktion die ein Objekt springen lassen soll geht noch nicht
PHP Code:
void jump (int obj, int height) { bool state = true; if (state = true) { state = false; int beg = dbSpriteY(obj); int end = dbSpriteY(obj) + height; while(dbSpriteY(obj) < end) dbMoveSprite(obj,3); while(dbSpriteY(obj) > beg) dbMoveSprite(obj,-3); state = true; } }
Woran liegt das? Ich hab wirklich keine Ahnung davon. Wäre sehr dankbar wenn mir jemand helfen würde.
|
|
|
01/21/2013, 11:57
|
#2
|
elite*gold: 0
Join Date: Sep 2005
Posts: 426
Received Thanks: 87
|
Quote:
bool state = true;
if (state = true)
{
state = false;
|
Die If Bedingung sollte ein Vergleichsoperator benutzt werden. Sieht nach einem Typo aus
|
|
|
01/21/2013, 16:05
|
#3
|
elite*gold: 35
Join Date: Jun 2009
Posts: 966
Received Thanks: 73
|
Ja, das hab ich bemerkt ^^ aber das eigentliche Problem ist, dass die Funktion 60 mal die Sekunde ausgeführt wird und ich will das verhindern, also dass sie erst nochmal ausgeführt werden kann sobald die vorherige beendet ist.
|
|
|
01/21/2013, 16:32
|
#4
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,832
Received Thanks: 4,152
|
Jou. Geh mal ins gamecreators forum und such nach "Timer based movement". Dann ist es nicht FPS basierend, sondern nach Zeit.
Deine Funktionen müssten ca. so aussehen:
Code:
bool charjumping;
bool falling;
int charjump_end;
int charjump_start;
void main()
{
if(mouseclick && !char_jumping)
{
char_jumping = true;
falling = false;
char_jumpend = spritepos + jumphigh;
char_jumpstart = spritepos;
}
if(char_jumping)
handle_charjump();
}
void handle_charjump();
{
if(!falling)
{
if(dbSpriteY(obj) < end)
{
dbMoveSprite(obj,3);
}else
{
falling = true;
}
}else // wieder runter
{
if(dbSpriteY(obj) > beg)
{
dbMoveSprite(obj,-3);
}else
{
char_jumping = false;
}
}
}
natürlich jetzt nicht copy & paste geeignet, aber dass du ne idee davon bekommst.
while ist eigentlich immer schlecht. Weil alles andere wärenddessen nicht "läuft". D.h. du bekommst garnicht mit wenn dein charakter (im programm) springt, weil es das garnicht rendert so wie du deine funktion hast.
Edit:
Hier meine Spiele die ich früher mit Dark GDK gebastelt (bzw angefangen) hatte.
Bin dann aber auf ne andere Engine gestiegen.
Aber für den Anfang ist Dark GDK ganz gut
Nur wenn du halt absolut kein c++ kannst wirst du große Probleme haben.
|
|
|
01/21/2013, 17:32
|
#5
|
elite*gold: 35
Join Date: Jun 2009
Posts: 966
Received Thanks: 73
|
Auf welche Engine bist du denn jetzt umgestiegen?
|
|
|
01/21/2013, 17:43
|
#6
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,832
Received Thanks: 4,152
|
SFML, würde ich aber als kompletter c++ Einsteiger nicht empfehlen.
Da passt Dark GDK eigentlich recht gut. Ist zwar etwas outdated, aber gefällt mir immer noch.
|
|
|
01/21/2013, 18:21
|
#7
|
elite*gold: 35
Join Date: Jun 2009
Posts: 966
Received Thanks: 73
|
Ich kriegs nicht hin :/
PHP Code:
#include "DarkGDK.h"
float speed; bool falling = false; bool jumping = false; int jump_beg; int jump_end; int height = 100; int player = 2;
void DarkGDK ( void ) { dbSyncOn ( ); dbSyncRate ( 60 );
dbDisableEscapeKey ( ); dbRandomize ( dbTimer ( ) );
dbLoadImage ( "backdrop.bmp", 1 ); dbSprite ( 1, 0, 0, 1 );
dbLoadImage ( "block.bmp", 2); dbSprite (player, 200, 440, 2);
dbSetImageColorKey ( 255, 0, 255 ); }
while ( LoopGDK() ) {
if(dbMouseClick() == 1 && !jumping) { falling = false; jumping = true; jump_beg = dbSpriteY(player); jump_end = dbSpritey(player) + height); }
if(jumping) jump(player, height, speed);
if ( dbEscapeKey ( ) ) break; dbSync ( ); }
void jump (int object, int height, float speed) { if (!falling) { if(dbSpriteY(player) < jump_end) { dbMoveSprite(player, speed); } else { falling = true; } } else { if(dbSpriteY(player) > jump_beg) { dbMoveSprite(player, -speed); } else { jumping = false; } }
}
Der Compiler meckert beim
PHP Code:
while ( LoopGDK() )
|
|
|
01/21/2013, 18:58
|
#8
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,832
Received Thanks: 4,152
|
Die While schleife muss in die void DarkGDK ( void ) Funktion (an s ende), die is gerade ausserhalb ^^
Und die void jump muss über der void DarkGDK stehen, sonst findet er sie (so) nicht. (Ändert sich später mit Klassen, wenn du soweit bist)
|
|
|
01/21/2013, 19:26
|
#9
|
elite*gold: 35
Join Date: Jun 2009
Posts: 966
Received Thanks: 73
|
Danke nochmal dafür Ich hab jetzt das Problem dass die Funktion nicht auf die bool Werte falling und jumping zugreifen kann um sie zu verändern. Wie würde man das machen? Mit Pointern?
|
|
|
01/26/2013, 20:27
|
#10
|
elite*gold: 0
Join Date: Jan 2013
Posts: 2
Received Thanks: 0
|
maybe
|
|
|
01/26/2013, 23:40
|
#11
|
elite*gold: 35
Join Date: Jun 2009
Posts: 966
Received Thanks: 73
|
Das hättest du dir jetzt aber nicht sparen können, oder?
|
|
|
|
Similar Threads
|
Dark-Fusion2 problem
05/03/2012 - Metin2 Private Server - 11 Replies
Ich wollte heute Dark-Fusion Pserver zocken also hab ich es mir runter geladen. Als ich es spielen wollte klickte ich auf die exe aber es passiert nichts es lädt nur und fertig ich weiß nicht was ich noch tun könnte bitte helft mir :) danke
|
Dark Orbit problem with bot
12/01/2011 - DarkOrbit - 2 Replies
Hi i have a problem with biobot. He give me
bioBot.rar how to fix
ImageShack® - Online Photo and Video Hosting
|
Dark Fusion Problem
09/10/2011 - Metin2 Private Server - 3 Replies
Hallo Leute,
ich hab folgendes Problem und zwar,sehe ich die neuen Rüstungen alle nur weiß.
Was kann ich tun?
Mfg
|
Problem auf Dark World
07/16/2010 - Metin2 PServer Advertising - 3 Replies
Hi
ich bin auf die Handel Map gegangen dort bisschen rumgerannt dann hab ich kick bekomm. wenn ich mich jetzt wieder einloggen will kickts mein cha nach char auswahl ... unstucker funkt nicht-.- pls help
|
Problem with multihack v3.0 Dark help mE
06/28/2010 - 4Story - 4 Replies
Watch....HELP ME:handsdown::handsdown:
http://i48.tinypic.com/2ivnsyd.jpg
|
All times are GMT +2. The time now is 00:21.
|
|