fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <math.h>
  4. #include <map>
  5. #include <Windows.h>
  6. #include <console.h>
  7. #include <ConsoleColor.h>
  8.  
  9. inline void SwapBits(unsigned long long &variable, unsigned char BIT1, unsigned char BIT2)
  10. {
  11. unsigned long long x = ((variable >> BIT1) ^ (variable >> BIT2)) & ((1U << 1) - 1); // XOR temporary
  12. variable ^= ((x << BIT1) | (x << BIT2));
  13. }
  14.  
  15. unsigned char SwapMap[64] =
  16. {
  17. 26,6,1,31,39,20,42,3,26,35,15,16,59,11,56,14,25,38,61,27,36,57,28,62,41,33,2,46,45,64,8,50,17,40,21,44,23,30,12,5,29,53,54,47,13,10,18,49,22,48,19,7,34,63,55,60,52,43,32,37,9,58,4,0
  18. };
  19.  
  20. inline void EncodeVar(unsigned long long &var)
  21. {
  22. for(unsigned char i = 0; ; )
  23. {
  24. SwapBits(var, i, SwapMap[i]);
  25. if(i == 63)
  26. break;
  27. else
  28. ++i;
  29. }
  30. for(unsigned char i = 0; ; )
  31. {
  32. SwapBits(var, SwapMap[i], i);
  33. if(i == 63)
  34. break;
  35. else
  36. ++i;
  37. }
  38. }
  39.  
  40. inline void DecodeVar(unsigned long long &var)
  41. {
  42. for(unsigned char i = 63; ; )
  43. {
  44. SwapBits(var, i, SwapMap[i]);
  45. if(i == 0)
  46. break;
  47. else
  48. --i;
  49. }
  50. for(unsigned char i = 63; ; )
  51. {
  52. SwapBits(var, SwapMap[i], i);
  53. if(i == 0)
  54. break;
  55. else
  56. --i;
  57. }
  58. }
  59.  
  60. unsigned long long Health;
  61. int main()
  62. {
  63. Health = 1000;
  64. EncodeVar(Health);
  65. while(!GetAsyncKeyState('Q'))
  66. {
  67. Console::Clear();
  68. DecodeVar(Health);
  69. std::cout << Health;
  70. if(GetAsyncKeyState('1'))
  71. {
  72. Health += 1;
  73. }
  74. if(GetAsyncKeyState('2'))
  75. {
  76. Health -= 1;
  77. }
  78. EncodeVar(Health);
  79. std::cout << "\n";
  80. std::cout << Health;
  81. Sleep (33);
  82. }
  83. return 0;
  84. }
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty