Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Lares

1x Contest-Sieger

  • »Lares« ist der Autor dieses Themas
  • Private Nachricht senden

1

11.04.2010, 15:31

Spiel reagiert bei manchen PCs nicht auf Tastatur

Hi Leute,

Ich habe vor kurzen ein Spiel fertiggestellt.
Allerdings reagiert das Spiel auf manchen PCs nichtauf die Tastatureingabe.
Jetzt stellt sich bei mir die Frage:"Woran kann das liegen?"
Es kann ja kein Fehler vom Programmcode sein, oder?
Falls es etwas hilft, das Spiel hab ich mit Irrlicht erstellt.



Ich hab einen Receiver von den dem Irrlichtreceiver abgeleitet.
Die Tasten werden in einer std::map gespeichert (Tastenname und Zustand).
Wird eine Taste gedrückt, wird die entsprechende Taste in der std::map gesucht
und ihr Zustand entsprechend verändert


Die Zustände sind:
Pressed - Taste wurde gerade erst gedrückt

Down - Taste wird über längeren Zeitraum gedrückt

Released- Taste wurde gerade losgelassen

Up - Taste wird nicht gedrückt

Damit die States von Released zu Up und von Pressed zu Down wechseln ruft
das Spiel in jeden Frame UpdateKeyStates() auf.

Hier der relevante Quellcode(falls es doch daran liegen sollte):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
bool CEventReceiver::OnEvent(const SEvent& event) 
{ 
 //Tastenevent abfragen 
 if (event.EventType == irr::EET_KEY_INPUT_EVENT)  
 {   
  std::map<irr::EKEY_CODE,eKeyState>::iterator i;   
  for(i = m_KeyMap.begin();i != m_KeyMap.end();i++)   
  {
   if(i->first == event.KeyInput.Key)     
    i->second=ChangeKeyState(i->second,event);
  }   
  return true;  
 }  
 return false; 
} 


eKeyState CEventReceiver::ChangeKeyState(eKeyState keystate,const irr::SEvent &event) 
{  
 //Wenn die Taste gedrückt ist...  
 if(event.KeyInput.PressedDown == true)  
 {   
  //Prüfen ob sie vorher losgelassen wurde...      
  if(keystate == UP || keystate == RELEASED)
   keystate = PRESSED;   
  else    
   keystate = DOWN;  
 }  
 else //Wenn sie nicht gedrückt wurde  
 {   
  if(keystate == PRESSED || keystate == DOWN)
   keystate = RELEASED;   else    keystate = UP;  
 }  
 return keystate; 
} 
  
void CEventReceiver::UpdateKeyStates() 
{  
 std::map<irr::EKEY_CODE,eKeyState>::iterator i;  
 for(i = m_KeyMap.begin();i != m_KeyMap.end();i++)  
 {   
  if(i->second == PRESSED)
   i->second = DOWN;
  else if(i->second == RELEASED)
   i->second = UP;  
 } 
}

-=Andreas=-

unregistriert

2

13.04.2010, 21:28

komisch - hatte gerade genau das gleich Problem als ich mein Spiel auf einem Windows 7 Rechner installiert habe. Nach einiger Zeit funktionierte die Space Taste dann wieder ?(

Lares

1x Contest-Sieger

  • »Lares« ist der Autor dieses Themas
  • Private Nachricht senden

3

18.04.2010, 20:30

Naja es sollte eigentlich nicht direkt am Betriebssystem liegen. Ich habs auf einen vista und xp pc probiert und es ging, als ich es dann an bekannte gab, die ebenfalls vista hatten, klappte es nicht ?( .

Ich habe das Spiel mal online gestellt vllt können das ja ein paar ausprobieren, ob es bei ihnen funktioniert? Dann wüsste ich wenigstens, ob das ein häufig auftretendes Problem ist oder nicht.

Hier der Link:
http://dl.dropbox.com/u/5844076/S-Hunter.zip

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

4

18.04.2010, 23:01

Also bei mir funktioniert es (Windows 7 Professional, 64-Bit).

5

18.04.2010, 23:02

Bei mir nicht, XP SP3
Vielleicht solltest du dich mal ins Irrlicht Forum begeben, die sollten dir da besser weiterhelfen können.
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

Lares

1x Contest-Sieger

  • »Lares« ist der Autor dieses Themas
  • Private Nachricht senden

6

19.04.2010, 17:47

Hm wäre eine idee, daran hab ich gar net gedacht. Danke :)

7

20.04.2010, 14:09

Bei mir gehts auch. Aber mit der Zeit wird mir schwindelig weil die Sterne sich n bisschen schnell bewegen.
Metal ist keine Musik sondern eine Religion.

Lares

1x Contest-Sieger

  • »Lares« ist der Autor dieses Themas
  • Private Nachricht senden

8

20.04.2010, 18:31

Wenn ich das Problem mit der Steuerung in den Griff kriege, dann werd ich mich auch um solche Sachen kümmern.
Danke fürs Feedback :)

9

21.04.2010, 20:42

Bei mir reagiert das spiel auch nicht.
außerdem hör ich ein penetrantes pfeifen, das auch shcon bei dem ein oder andern komerziellen spiel auftrat - interessanterweise ändert es hier jedoch seine tonhöhe abhängig vom gewählten renderer.
System:
Windows 7
Intel Q6600 (4*2.4GHz)
3GB RAM
ATI HD 4850 mit 1 GB GRAM
Onboard-Soundchip

C--

Alter Hase

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

10

22.04.2010, 10:54

@PCShadow: Das Pfeifen kommt imo von der Graka, ich glaube das tritt bei sehr hohen Frameraten (einige 100) auf. Dann fangen irgendwelche Bauteile in der Graka an zu schwingen, die Schwingungen erzeugen einen Ton. Da sich bei einem anderen Renderer normalerweise die Framerate ändert, ändert sich die Frequenz der Schwingungen und auch die des Tones, daher Tonhöhenveränderung.
Glaube ich zumindest ^^

mfg C--
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

Werbeanzeige