Användarprofil

Uppgifter
Användarnamn
Email
Besök -
Hemsida Ingen
Plats (stad)
Senaste besök 01:00 - 1:a Januari 1970
Poster i forumet
Varningar
Grupp
Medlem sedan 01:00 - 1:a Januari 1970
Artiklar och filer
Den här användaren har inga artiklar eller filer

Avatar


Presentation av

Den här användaren har inte skapat någon personlig presentation.

Senaste inläggen i forumet

Hjälp med sortering!
Hej!
Jag ska programmera en enkel highscore lista där man får skriva i namn och poäng och sen ska listan skrivas ut i rätt ordning. Jag har lite problem med sorteringen och det borde inte vara så svårt, men jag kan inte se vad det är för fel =/
fick nämligen inte använda vectorns inbyggda funktion Sort så därför använder jag istället BubbleSort.
Någon som kan se vad den gör för fel?

  1. #include <iostream>
  2. #include <string>
  3. #include <iomanip>
  4. #include <vector>
  5. #include <algorithm>
  6. #include <cstdlib>
  7. using namespace std;
  8.  
  9. //Skapar en struct över en person
  10. struct Person
  11. {
  12. char namn[40];
  13. int hiscore;
  14. };
  15.  
  16.  
  17. void bubbleSort(vector<Person> spelare)
  18. {
  19. for(int i=0 ; i<spelare.size(); i++)
  20. {
  21. for(int j=0 ; j<i; j++)
  22. {
  23. if(spelare[i].hiscore>spelare[j].hiscore)
  24. {
  25.  
  26. Person temp;
  27. temp = spelare[i];
  28. spelare[j],=spelare[i];
  29. spelare[j]=temp;
  30.  
  31.  
  32. }
  33. }
  34. }
  35.  
  36. }
  37.  
  38. //Funktion som sorterar och visar highscore
  39. void lista( vector<Person> spelare)
  40. {
  41. cout<<"Sorted highscore:"<<endl<<endl;
  42.  
  43. bubbleSort(spelare);//sortera med funktionen bubbleSort()
  44.  
  45.  
  46. for(int i=0; i<spelare.size(); i++)
  47. {
  48. if(i>4)//Visa endast topp 5
  49. break;
  50. //utskrift och formatering
  51. cout << setw(8) << std::left << spelare[i].hiscore << spelare[i].namn<<endl;
  52. }
  53. cout<<"Do you want to enter a new name? (yes/no): ";
  54. }
  55.  
  56.  
  57. //main funktionen
  58. int main(int argc, char *argv[])
  59. {
  60.  
  61. string temp=" ";
  62. Person person[6];
  63. vector<Person> spelare; //deklarerar en vektor av structen Person
  64.  
  65. //Fyller Highscore:n
  66. strcpy(person[0].namn, "Anna"); person[0].hiscore=1000; spelare.push_back(person[0]);
  67. strcpy(person[1].namn, "Linda"); person[1].hiscore=800; spelare.push_back(person[1]);
  68. strcpy(person[2].namn, "Peter"); person[2].hiscore=600; spelare.push_back(person[2]);
  69. strcpy(person[3].namn, "Ulla-Bella"); person[3].hiscore=500; spelare.push_back(person[3]);
  70. strcpy(person[4].namn, "David"); person[4].hiscore=100; spelare.push_back(person[4]);
  71.  
  72. lista(spelare);
  73.  
  74.  
  75. //Loopa så länge man inte skriver "no"
  76. while(temp!="no")
  77. {
  78. //inmatning
  79. cin >> temp;
  80.  
  81. if (temp=="no")
  82. break;//gå ur loop inmatning är "no"
  83.  
  84. if(temp=="yes")
  85. {
  86. Person nyperson;
  87. cout << endl << "Enter new name: ";
  88. cin >> nyperson.namn;
  89.  
  90. cout << "Enter score: ";
  91. cin >> nyperson.hiscore;
  92. cout << endl;
  93. //Sätter in ny player i vektorn
  94. spelare.push_back(nyperson);
  95.  
  96. //Sorterar och skriver ut Highscore
  97. lista(spelare);
  98. }
  99. else //Om fel inmatning"
  100. cout<<"Please enter yes or no! Do you want to enter a new name? (yes/no): ";
  101. }
  102.  
  103. system("PAUSE");
  104. return 0;
  105. }


Postad 14:44 - 31:a Juli 2009
Nybörjare, Labyrintspel
Hej!
Jag har nyss börjat en spelprogrammering kurs och jag måste erkänna att jag inte är en hajjare på programmering.. än...

Det jag ska göra är ett labyrintspel, där en gubbe ska ta sej från en punkt till en annan, genom att man trycker på navigeringsknappar.

Jag har kommit så långt att knapparna och menyn finns, och har ritat ut ett X som ska föreställa en gubbe.
Nu vill jag få X:et att flytta sig ca: 14px när jag trycker på nån av knapparna och det är här det skiter sej för mej. Kan nån hjälpa och ge ett ex. på en kodsnutt?


Koden:

  1. #include "resource.h"
  2. #include <windows.h>
  3. #include "TCHAR.H"
  4.  
  5. // Forward declarations
  6. LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
  7.  
  8. //konstanter till knapparna
  9. enum
  10. {
  11. NORTHBUTTON_ID = 100
  12. };
  13. enum
  14. {
  15. SOUTHBUTTON_ID = 200
  16. };
  17. enum
  18. {
  19. WESTBUTTON_ID = 300
  20. };
  21. enum
  22. {
  23. EASTBUTTON_ID = 400
  24. };
  25.  
  26.  
  27. //main
  28. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
  29. {
  30. // Definiera fönster
  31. WNDCLASSEX wClass = { 0 };
  32. wClass.cbSize = sizeof( WNDCLASSEX );
  33. wClass.hbrBackground = (HBRUSH) GetStockObject( WHITE_BRUSH );
  34. wClass.hCursor = (HCURSOR) LoadCursor( 0, IDC_ARROW );
  35. wClass.hIcon = (HICON) LoadIcon( 0, IDI_APPLICATION );
  36. wClass.hIconSm = 0;
  37. wClass.hInstance = hInstance;
  38. wClass.lpfnWndProc = WinProc;
  39. wClass.lpszClassName = "Labyrint";
  40. wClass.lpszMenuName = 0;
  41. wClass.style = 0;
  42. wClass.cbClsExtra = 0;
  43. wClass.cbWndExtra = 0;
  44. wClass.lpszMenuName = MAKEINTRESOURCE( IDR_MENY );
  45.  
  46.  
  47. // Registrera Windows klassen
  48. RegisterClassEx(&wClass);
  49.  
  50. // Skapa fönster
  51. HWND hwndMain = CreateWindow( "Labyrint", "Labyrinth-spel",
  52. WS_OVERLAPPEDWINDOW|WS_VISIBLE,
  53. 100, 150,
  54. 450, 350,
  55. 0, 0, hInstance, 0 );
  56.  
  57. //Skapa knappar
  58. HWND hwndNorthButton = CreateWindow( "BUTTON", // Fönsterklass
  59. "North", // Text på knappen
  60. WS_CHILD|WS_VISIBLE, // Stil, OBS: WS_CHILD
  61. 350, 100, // Position, relativt föräldern
  62. 50, 20, // Storlek
  63. hwndMain, // Förälderfönstrets handtag
  64. (HMENU)NORTHBUTTON_ID, // Knappens ID
  65. hInstance, // HINSTANCE som skickas med i WinMain
  66. 0 );
  67. HWND hwndSouthButton = CreateWindow( "BUTTON", // Fönsterklass
  68. "South", // Text på knappen
  69. WS_CHILD|WS_VISIBLE, // Stil, OBS: WS_CHILD
  70. 350, 160, // Position, relativt föräldern
  71. 50, 20, // Storlek
  72. hwndMain, // Förälderfönstrets handtag
  73. (HMENU)SOUTHBUTTON_ID, // Knappens ID
  74. hInstance, // HINSTANCE som skickas med i WinMain
  75. 0 );
  76. HWND hwndWestButton = CreateWindow( "BUTTON", // Fönsterklass
  77. "West", // Text på knappen
  78. WS_CHILD|WS_VISIBLE, // Stil, OBS: WS_CHILD
  79. 310, 130, // Position, relativt föräldern
  80. 50, 20, // Storlek
  81. hwndMain, // Förälderfönstrets handtag
  82. (HMENU)WESTBUTTON_ID, // Knappens ID
  83. hInstance, // HINSTANCE som skickas med i WinMain
  84. 0 );
  85. HWND hwndEastButton = CreateWindow( "BUTTON", // Fönsterklass
  86. "East", // Text på knappen
  87. WS_CHILD|WS_VISIBLE, // Stil, OBS: WS_CHILD
  88. 390, 130, // Position, relativt föräldern
  89. 50, 20, // Storlek
  90. hwndMain, // Förälderfönstrets handtag
  91. (HMENU)EASTBUTTON_ID, // Knappens ID
  92. hInstance, // HINSTANCE som skickas med i WinMain
  93. 0 );
  94. MSG msg = { 0 };
  95. while( GetMessage( &msg, 0, 0, 0 ) )
  96. {
  97. // Hantera meddelanden
  98. TranslateMessage( &msg );
  99. DispatchMessage( &msg );
  100. }
  101.  
  102. // Avsluta
  103. return (int)msg.wParam;
  104. }
  105.  
  106.  
  107. //WinProc
  108. LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  109. {
  110. HDC hdc = {0}; // ett handtag till ett DC, som vi kommer att få i WM_PAINT
  111. PAINTSTRUCT ps = {0}; // struct som anger en rektangel av fönstret som behövs ritas om
  112.  
  113. // Vilket meddelande?
  114. switch(msg)
  115. {
  116. //Utmatning med TextOut()
  117. case WM_PAINT:
  118. hdc = BeginPaint( hwnd, &ps ); // hämta DC
  119. TextOut( hdc, 20, 20, "X", strlen( "X" ) ); // skriv ut text till fönstret
  120. EndPaint( hwnd, &ps ); // släpp DC
  121. break;
  122.  
  123.  
  124. // Meny
  125. case WM_COMMAND:
  126. //Vilket menyval
  127. switch( LOWORD( wParam ) )
  128. {
  129. //File->Quit avslutar programmet
  130. case ID_FILE_QUIT:
  131. if( MessageBox( 0, "Do you really want to quit?", "Are you sure?", MB_YESNO ) == IDYES )
  132. {
  133. PostQuitMessage( 0 );
  134. }
  135. else
  136. return DefWindowProc( hwnd, msg, wParam, lParam );
  137.  
  138. break;
  139.  
  140. // North knappen
  141. case NORTHBUTTON_ID:
  142.  
  143. //Ändra position på X:ET.. ???
  144.  
  145.  
  146.  
  147. return DefWindowProc( hwnd, msg, wParam, lParam );
  148.  
  149. break;
  150.  
  151. // South knappen
  152. case SOUTHBUTTON_ID:
  153.  
  154. return DefWindowProc( hwnd, msg, wParam, lParam );
  155. break;
  156.  
  157. // West knappen
  158. case WESTBUTTON_ID:
  159.  
  160. return DefWindowProc( hwnd, msg, wParam, lParam );
  161. break;
  162.  
  163. // East knappen
  164. case EASTBUTTON_ID:
  165. return DefWindowProc( hwnd, msg, wParam, lParam );
  166. break;
  167.  
  168. // Okänt menyval
  169. default:
  170. return DefWindowProc( hwnd, msg, wParam, lParam );
  171. break;
  172. }
  173.  
  174. // Avsluta om man trycker på krysset
  175. case WM_CLOSE:
  176. PostQuitMessage( 0 );
  177. break;
  178.  
  179. default:
  180. return DefWindowProc( hwnd, msg, wParam, lParam );
  181. break;
  182. }
  183.  
  184. return 0;
  185. }


Postad 15:18 - 23:e Juli 2009

Skicka meddelande
Läs s blog