Gaaah! Sitter och knapprar C++ kod

Zormin skrev:
Fenix, det där var väl lite overkill va? Finns ju en rand-funktion i stdlib. Här kommer en nummergenerator för en tärning ... lite fritt taget ur minnet.

int nummer;
srand(time(NULL));
nummer = (rand()%6)+1;

Edit: LiCrO, din hemläxa blir att förstå vad srand och % gör där.

Är det nu jag ska börja påpeka att rand-funktionen inte är slumpartad nog? :banana

Varför nyttja rand? Om man ska lära sig koda är det väl ändå lika så bäst att skapa en egen slumtalsfunktion? Ja, den är lite "overkill", men han kommer att ha nytta av den i framtiden.

:)
 
Förlåt om jag tjyvar din tråd, men jag har med ett litet problem som antagligen är ganska lätt att knäcka..

Sitter och programmerar ett 3D spel för tillfället och har börjat lite smått på kontrollerna, MEN jag har satt så att på CTRL (VK_CONTROL) så duckar man och på CTRL && 'W' så crouch-går man.
Men problemet är att efter man tryckt på CTRL en gång så måste man trycka på CTRL en gång till för att det ska gå att gå framåt igen (bara 'W') eftersom jag har låst satserna i 'W'.

Koden hittills:

void KeyPressed()
{
if(GetKeyState(VK_UP) & 0x80 || GetKeyState('W') & 0x80) {
if(GetKeyState(VK_SHIFT) & 0x80 || GetKeyState(VK_CONTROL)){
}

else{
g_Model.SetLegsAnimation("LEGS_RUN");
if((model.speed.x+model.speed.y+model.speed.z)/3 <= 0.7){
model.speed.x += model.heading.x * 0.0055 * airdrag;
model.speed.y += model.heading.y * 0.0055 * airdrag;
model.speed.z += model.heading.z * 0.0055 * airdrag;
}
}
}
if(GetKeyState(VK_DOWN) & 0x80 || GetKeyState('S') & 0x80 ) {
g_Model.SetLegsAnimation("LEGS_BACK");
if((model.speed.x+model.speed.y+model.speed.z)/3 >= -0.3)
{
model.speed.x -= model.heading.x * 0.002 * airdrag;
model.speed.y -= model.heading.y * 0.002 * airdrag;
model.speed.z -= model.heading.z * 0.002 * airdrag;
}
}
if(GetKeyState(VK_UP) & 0x80 && GetKeyState(VK_SHIFT) & 0x80 || GetKeyState('W') & 0x80 && GetKeyState(VK_SHIFT) & 0x80) {
g_Model.SetLegsAnimation("LEGS_WALK");

if((model.speed.x+model.speed.y+model.speed.z)/3 >= -0.3)
{
model.speed.x += model.heading.x * 0.00165 * airdrag;
model.speed.y += model.heading.y * 0.00165 * airdrag;
model.speed.z += model.heading.z * 0.00165 * airdrag;
}
}
if(GetKeyState(VK_CONTROL) & 0x80) {
if(GetKeyState('W') & 0x80){
}
else{
g_Model.SetLegsAnimation("LEGS_IDLECR");
}
}
if(GetKeyState(VK_CONTROL) & 0x80 && GetKeyState('W') & 0x80) {
g_Model.SetLegsAnimation("LEGS_WALKCR");
if((model.speed.x+model.speed.y+model.speed.z)/3 <= 0.7)
{
model.speed.x += model.heading.x * 0.002 * airdrag;
model.speed.y += model.heading.y * 0.002 * airdrag;
model.speed.z += model.heading.z * 0.002 * airdrag;
}
}
if(GetKeyState(VK_LEFT) & 0x80 || GetKeyState('A') & 0x80) {
model.direction += 0.04;
}
if(GetKeyState(VK_RIGHT) & 0x80 || GetKeyState('D') & 0x80) {
model.direction -= 0.04;
}

Den röda texten är var koden verkar förbi låst tills man tryckt på CTRL en gång till.
Någon som har någon aning? :huvet

EDIT: Måste städa koden.. den är HEMSK..
 
Last edited:
RED_LiME skrev:
Förlåt om jag tjyvar din tråd, men jag har med ett litet problem som antagligen är ganska lätt att knäcka..

Sitter och programmerar ett 3D spel för tillfället och har börjat lite smått på kontrollerna, MEN jag har satt så att på CTRL (VK_CONTROL) så duckar man och på CTRL && 'W' så crouch-går man.
Men problemet är att efter man tryckt på CTRL en gång så måste man trycka på CTRL en gång till för att det ska gå att gå framåt igen (bara 'W') eftersom jag har låst satserna i 'W'.

Koden hittills:

void KeyPressed()
{
if(GetKeyState(VK_UP) & 0x80 || GetKeyState('W') & 0x80) {
if(GetKeyState(VK_SHIFT) & 0x80 || GetKeyState(VK_CONTROL)){
}

else{
g_Model.SetLegsAnimation("LEGS_RUN");
if((model.speed.x+model.speed.y+model.speed.z)/3 <= 0.7){
model.speed.x += model.heading.x * 0.0055 * airdrag;
model.speed.y += model.heading.y * 0.0055 * airdrag;
model.speed.z += model.heading.z * 0.0055 * airdrag;
}
}
}
if(GetKeyState(VK_DOWN) & 0x80 || GetKeyState('S') & 0x80 ) {
g_Model.SetLegsAnimation("LEGS_BACK");
if((model.speed.x+model.speed.y+model.speed.z)/3 >= -0.3)
{
model.speed.x -= model.heading.x * 0.002 * airdrag;
model.speed.y -= model.heading.y * 0.002 * airdrag;
model.speed.z -= model.heading.z * 0.002 * airdrag;
}
}
if(GetKeyState(VK_UP) & 0x80 && GetKeyState(VK_SHIFT) & 0x80 || GetKeyState('W') & 0x80 && GetKeyState(VK_SHIFT) & 0x80) {
g_Model.SetLegsAnimation("LEGS_WALK");

if((model.speed.x+model.speed.y+model.speed.z)/3 >= -0.3)
{
model.speed.x += model.heading.x * 0.00165 * airdrag;
model.speed.y += model.heading.y * 0.00165 * airdrag;
model.speed.z += model.heading.z * 0.00165 * airdrag;
}
}
if(GetKeyState(VK_CONTROL) & 0x80) {
if(GetKeyState('W') & 0x80){
}
else{
g_Model.SetLegsAnimation("LEGS_IDLECR");
}
}
if(GetKeyState(VK_CONTROL) & 0x80 && GetKeyState('W') & 0x80) {
g_Model.SetLegsAnimation("LEGS_WALKCR");
if((model.speed.x+model.speed.y+model.speed.z)/3 <= 0.7)
{
model.speed.x += model.heading.x * 0.002 * airdrag;
model.speed.y += model.heading.y * 0.002 * airdrag;
model.speed.z += model.heading.z * 0.002 * airdrag;
}
}
if(GetKeyState(VK_LEFT) & 0x80 || GetKeyState('A') & 0x80) {
model.direction += 0.04;
}
if(GetKeyState(VK_RIGHT) & 0x80 || GetKeyState('D') & 0x80) {
model.direction -= 0.04;
}

Den röda texten är var koden verkar förbi låst tills man tryckt på CTRL en gång till.
Någon som har någon aning? :huvet

EDIT: Måste städa koden.. den är HEMSK..


Felsöknings abc :D

Debug'a enklast genom att hela tiden returnera KeyState's värde i ett synligt fält, så har du en bra början.

Undersök headern för GetKeyState hur den arbetar, brukar avslöja mycket intressant. I många fall, när man arbetar med interrupter måste man även fånga när man släpper tangenter för att då nollställa eventuella variabler som annars åker med in i nästa loop.
 
Fenix skrev:
Felsöknings abc :D

Debug'a enklast genom att hela tiden returnera KeyState's värde i ett synligt fält, så har du en bra början.

Undersök headern för GetKeyState hur den arbetar, brukar avslöja mycket intressant. I många fall, när man arbetar med interrupter måste man även fånga när man släpper tangenter för att då nollställa eventuella variabler som annars åker med in i nästa loop.

Eller gör man latemans sättet a la REDLiME och gör en boolean som blir true vid keypressed och false vid KeyUp :D
 
RED_LiME skrev:
Eller gör man latemans sättet a la REDLiME och gör en boolean som blir true vid keypressed och false vid KeyUp :D

Alla sätt är bra utom de dåliga. :fyllisar

Kan man få en ihopsmackad binär sen, så man får avnjuta resultatet?
 
Fenix skrev:
Alla sätt är bra utom de dåliga. :fyllisar

Kan man få en ihopsmackad binär sen, så man får avnjuta resultatet?

Självklart :tummenupp
Kan posta i en helt ny tråd sen när det "släpps" =)

EDIT: Förvänta dej inget super ultra leet haxx0r game nu ;D
 
Last edited:
RED_LiME skrev:
Förvänta dej inget super ultra leet haxx0r game nu ;D
Våran inlämings upg som är obligatorisk innefattar att vi ska ha gjort klart ett spel inom 4veckor. Inte fult lika avancerat som dit men men endå så förbannat svårt (för mig).
DynamiteBill heter spelet.
man ska kunna hoppa runt på en bana och smala Dynamiter och pengar samtidigt som man ska undvika trollen som jagar en.
Vill inte kugga dena kursen men det känns som en omöjlighet att göra detta.
Någon har något bra tips på i vilken ända man ska börja. Jag är så pass elajt nu att jag kan få ut ett svart fönster på skärmen men sen då :va
 
LiCrO skrev:
Våran inlämings upg som är obligatorisk innefattar att vi ska ha gjort klart ett spel inom 4veckor. Inte fult lika avancerat som dit men men endå så förbannat svårt (för mig).
DynamiteBill heter spelet.
man ska kunna hoppa runt på en bana och smala Dynamiter och pengar samtidigt som man ska undvika trollen som jagar en.
Vill inte kugga dena kursen men det känns som en omöjlighet att göra detta.
Någon har något bra tips på i vilken ända man ska börja. Jag är så pass elajt nu att jag kan få ut ett svart fönster på skärmen men sen då :va

Vilken teknik ska du använda? OpenGL eller DX ?

Jag gör mitt spel i OpenGL och det är inte så svårt när man väl kommit igång.

Ta en titt på www.gametutorials.com och gå in på OpenGL så kan du titta lite och lära dej nåt iallafall? :tuttar

Collision detection är väl det jobbigaste om du frågar mej..

Mitt spel är inget och hurra för än, har bara så man kan springa, smyga, krypa på ett golv som ritas ut. mjuk tredje personskamera (saxad kod för det mesta till kameran). Har problem med texturen, den vill itne ladda :huvet
 
LiCrO skrev:
Våran inlämings upg som är obligatorisk innefattar att vi ska ha gjort klart ett spel inom 4veckor. Inte fult lika avancerat som dit men men endå så förbannat svårt (för mig).
DynamiteBill heter spelet.
man ska kunna hoppa runt på en bana och smala Dynamiter och pengar samtidigt som man ska undvika trollen som jagar en.
Vill inte kugga dena kursen men det känns som en omöjlighet att göra detta.
Någon har något bra tips på i vilken ända man ska börja. Jag är så pass elajt nu att jag kan få ut ett svart fönster på skärmen men sen då :va
När jag läste kursen så klara sig ca 30 %, fast nu har dom ju sänkt kraven betydligt som jag förstod de som när jag snackade med min kompis som läser kursen nu!
 
Vad är det för kurs egentligen? Vad är det bra för? Hur länge varar kursen? Högskola?

Blir ju lite intresserad på vafan det är för något :tomten
 
RED_LiME skrev:
Vad är det för kurs egentligen? Vad är det bra för? Hur länge varar kursen? Högskola?

Blir ju lite intresserad på vafan det är för något :tomten
Du skulle nog gilla Dataspelsutveckling här i skövde en av sveriges bästa program inom spelprogrammering har jag hört.
 
LiCrO skrev:
Du skulle nog gilla Dataspelsutveckling här i skövde en av sveriges bästa program inom spelprogrammering har jag hört.
Det är nog den enda t.o.m!!! Det va de när det startades iaf!

Sen att det inte finns ett enda jobb är ju en annan sak...
 
Fenix skrev:
Varför nyttja rand? Om man ska lära sig koda är det väl ändå lika så bäst att skapa en egen slumtalsfunktion?
Tyckte bara att du inte skulle skrämma livet ur stackarn.

Det är inget fel i att lära sig hur man skriver en rand-funktion, men att börja med det är helt fel. Om en person ligger på nivån när han/hon håller på att lära sig vad objekt och instans är så är det dumt att blanda in så avancerad programmering. Det går lättare om man lär sig en sak i taget. Jag menar, det första man gör när man lär sig åka hoj är ju inte att köra ett race i MotoGP.
 
Zormin skrev:
Tyckte bara att du inte skulle skrämma livet ur stackarn.

Det är inget fel i att lära sig hur man skriver en rand-funktion, men att börja med det är helt fel. Om en person ligger på nivån när han/hon håller på att lära sig vad objekt och instans är så är det dumt att blanda in så avancerad programmering. Det går lättare om man lär sig en sak i taget. Jag menar, det första man gör när man lär sig åka hoj är ju inte att köra ett race i MotoGP.

Alltid skönt när någon påpekar det uppenbara. :7peta (skämtar bara)
 
Back
Top