Pastebin is 300% more awesome when you are logged in. Sign Up, it's FREE!
Guest

TicTacToe - Implementierung

By: Erb1tux on Apr 3rd, 2014  |  syntax: C++  |  size: 7.65 KB  |  views: 3  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. void schwer(char pos[][3], char player){
  2.         if (kannOppWin(pos, player))
  3.                 return;
  4.         if (kannPlayerWin(pos, player))
  5.                 return;
  6.         if (mitteFrei(pos, player))
  7.                 return;
  8.         if (eckeSetzen(pos, player))
  9.                 return;
  10.         if (randSetzen(pos, player))
  11.                 return;
  12.         else{
  13.                 printf("Ich weis nicht wo ich noch mein %c setzen soll.\nEs scheint mir alles voll zu sein!\nVielleicht hat %c ja geschummelt!\nSCHIEBUNG!!!", player, gegner(player));
  14.         }
  15. }
  16. //Die Implementationen für die Funktionen
  17. int kannOppWin(char pos[][3], char player){
  18.         if ((pos[0][0] == pos[0][2]) && (pos[0][1] == NONE) && (pos[0][0] == gegner(player))){
  19.                 pos[0][1] = player;
  20.                 return 1;
  21.         }
  22.         if ((pos[0][0] == pos[2][0]) && pos[1][0] == NONE && pos[0][0] == gegner(player)){
  23.                 pos[1][0] = player;
  24.                 return 1;
  25.         }
  26.         if ((pos[2][0] == pos[2][2]) && pos[2][1] == NONE && pos[2][0] == gegner(player)){
  27.                 pos[2][1] = player;
  28.                 return 1;
  29.         }
  30.         if ((pos[2][2] == pos[0][2]) && pos[1][2] == NONE && pos[2][2] == gegner(player)){
  31.                 pos[1][2] = player;
  32.                 return 1;
  33.         }
  34.         if ((pos[0][0] == pos[2][2]) && pos[1][1] == NONE && pos[0][0] == gegner(player)){
  35.                 pos[1][1] = player;
  36.                 return 1;
  37.         }
  38.         if ((pos[2][0] == pos[0][2]) && pos[1][1] == NONE && pos[2][0] == gegner(player)){
  39.                 pos[1][1] = player;
  40.                 return 1;
  41.         }
  42.         if (pos[0][0] == pos[0][1] && pos[0][2] == NONE && pos[0][0] == gegner(player)){
  43.                 pos[0][2] = player;
  44.                 return 1;
  45.         }
  46.         if (pos[0][1] == pos[0][2] && pos[0][0] == NONE && pos[0][1] == gegner(player)){
  47.                 pos[0][0] = player;
  48.                 return 1;
  49.         }
  50.         if (pos[0][0] == pos[1][0] && pos[2][0] == NONE && pos[0][0] == gegner(player)){
  51.                 pos[2][0] = player;
  52.                 return 1;
  53.         }
  54.         if (pos[1][0] == pos[2][0] && pos[0][0] == NONE && pos[0][0] == gegner(player)){
  55.                 pos[0][0] = player;
  56.                 return 1;
  57.         }
  58.         if (pos[2][0] == pos[2][1] && pos[2][2] == NONE && pos[2][0] == gegner(player)){
  59.                 pos[2][2] = player;
  60.                 return 1;
  61.         }
  62.         if (pos[2][1] == pos[2][2] && pos[2][0] == NONE && pos[2][1] == gegner(player)){
  63.                 pos[2][0] = player;
  64.                 return 1;
  65.         }
  66.         if (pos[0][2] == pos[1][2] && pos[2][2] == NONE && pos[0][2] == gegner(player)){
  67.                 pos[2][2] = player;
  68.                 return 1;
  69.         }
  70.         if (pos[1][2] == pos[2][2] && pos[0][2] == NONE && pos[1][2] == gegner(player)){
  71.                 pos[0][2] = player;
  72.                 return 1;
  73.         }
  74.         if (pos[1][2] == pos[1][1] && pos[1][0] == NONE && pos[1][2] == gegner(player)){
  75.                 pos[1][0] = player;
  76.                 return 1;
  77.         }
  78.         if (pos[1][0] == pos[1][1] && pos[1][2] == NONE && pos[1][1] == gegner(player)){
  79.                 pos[1][2] = player;
  80.                 return 1;
  81.         }
  82.         if (pos[1][1] == pos[2][2] && pos[0][0] == NONE && pos[2][2] == gegner(player)){
  83.                 pos[0][0] = player;
  84.                 return 1;
  85.         }
  86.         if (pos[0][0] == pos[1][1] && pos[2][2] == NONE && pos[1][1] == gegner(player)){
  87.                 pos[2][2] = player;
  88.                 return 1;
  89.         }
  90.         if (pos[0][1] == pos[1][1] && pos[2][1] == NONE && pos[1][1] == gegner(player)){
  91.                 pos[2][1] = player;
  92.                 return 1;
  93.         }
  94.         if (pos[1][1] == pos[2][1] && pos[0][1] == NONE && pos[2][1] == gegner(player)){
  95.                 pos[0][1] = player;
  96.                 return 1;
  97.         }
  98.         if (pos[0][2] == pos[1][1] && pos[2][0] == NONE && pos[0][2] == gegner(player)){
  99.                 pos[2][0] = player;
  100.                 return 1;
  101.         }
  102.         if (pos[1][1] == pos[2][0] && pos[0][2] == NONE && pos[1][1] == gegner(player)){
  103.                 pos[0][2] = player;
  104.                 return 1;
  105.         }
  106.         if (pos[0][1] == pos[2][1] && pos[1][1] == NONE && pos[0][1] == gegner(player)){
  107.                 pos[1][1] = player;
  108.                 return 1;
  109.         }
  110.         if (pos[1][0] == pos[1][2] && pos[1][1] == NONE && pos[1][0] == gegner(player)){
  111.                 pos[1][1] = player;
  112.                 return 1;
  113.         }
  114.         else return 0;
  115. }
  116. int kannPlayerWin(char pos[][3], char player){
  117.         //die bedingung &&pos[][] == player ist überflüssug aber da weil ich es mit suchen und ersetzen geänder hab
  118.         if ((pos[0][0] == pos[0][2]) && (pos[0][1] == NONE) && (pos[0][0] == player)){
  119.                 pos[0][1] = player;
  120.                 return 1;
  121.         }
  122.         if ((pos[0][0] == pos[2][0]) && pos[1][0] == NONE && pos[0][0] == player){
  123.                 pos[1][0] = player;
  124.                 return 1;
  125.         }
  126.         if ((pos[2][0] == pos[2][2]) && pos[2][1] == NONE && pos[2][0] == player){
  127.                 pos[2][1] = player;
  128.                 return 1;
  129.         }
  130.         if ((pos[2][2] == pos[0][2]) && pos[1][2] == NONE && pos[2][2] == player){
  131.                 pos[1][2] = player;
  132.                 return 1;
  133.         }
  134.         if ((pos[0][0] == pos[2][2]) && pos[1][1] == NONE && pos[0][0] == player){
  135.                 pos[1][1] = player;
  136.                 return 1;
  137.         }
  138.         if ((pos[2][0] == pos[0][2]) && pos[1][1] == NONE && pos[2][0] == player){
  139.                 pos[1][1] = player;
  140.                 return 1;
  141.         }
  142.         if (pos[0][0] == pos[0][1] && pos[0][2] == NONE && pos[0][0] == player){
  143.                 pos[0][2] = player;
  144.                 return 1;
  145.         }
  146.         if (pos[0][1] == pos[0][2] && pos[0][0] == NONE && pos[0][1] == player){
  147.                 pos[0][0] = player;
  148.                 return 1;
  149.         }
  150.         if (pos[0][0] == pos[1][0] && pos[2][0] == NONE && pos[0][0] == player){
  151.                 pos[2][0] = player;
  152.                 return 1;
  153.         }
  154.         if (pos[1][0] == pos[2][0] && pos[0][0] == NONE && pos[0][0] == player){
  155.                 pos[0][0] = player;
  156.                 return 1;
  157.         }
  158.         if (pos[2][0] == pos[2][1] && pos[2][2] == NONE && pos[2][0] == player){
  159.                 pos[2][2] = player;
  160.                 return 1;
  161.         }
  162.         if (pos[2][1] == pos[2][2] && pos[2][0] == NONE && pos[2][1] == player){
  163.                 pos[2][0] = player;
  164.                 return 1;
  165.         }
  166.         if (pos[0][2] == pos[1][2] && pos[2][2] == NONE && pos[0][2] == player){
  167.                 pos[2][2] = player;
  168.                 return 1;
  169.         }
  170.         if (pos[1][2] == pos[2][2] && pos[0][2] == NONE && pos[1][2] == player){
  171.                 pos[0][2] = player;
  172.                 return 1;
  173.         }
  174.         if (pos[1][2] == pos[1][1] && pos[1][0] == NONE && pos[1][2] == player){
  175.                 pos[1][0] = player;
  176.                 return 1;
  177.         }
  178.         if (pos[1][0] == pos[1][1] && pos[1][2] == NONE && pos[1][1] == player){
  179.                 pos[1][2] = player;
  180.                 return 1;
  181.         }
  182.         if (pos[1][1] == pos[2][2] && pos[0][0] == NONE && pos[2][2] == player){
  183.                 pos[0][0] = player;
  184.                 return 1;
  185.         }
  186.         if (pos[0][0] == pos[1][1] && pos[2][2] == NONE && pos[1][1] == player){
  187.                 pos[2][2] = player;
  188.                 return 1;
  189.         }
  190.         if (pos[0][1] == pos[1][1] && pos[2][1] == NONE && pos[1][1] == player){
  191.                 pos[2][1] = player;
  192.                 return 1;
  193.         }
  194.         if (pos[1][1] == pos[2][1] && pos[0][1] == NONE && pos[2][1] == player){
  195.                 pos[0][1] = player;
  196.                 return 1;
  197.         }
  198.         if (pos[0][2] == pos[1][1] && pos[2][0] == NONE && pos[0][2] == player){
  199.                 pos[2][0] = player;
  200.                 return 1;
  201.         }
  202.         if (pos[1][1] == pos[2][0] && pos[0][2] == NONE && pos[1][1] == player){
  203.                 pos[0][2] = player;
  204.                 return 1;
  205.         }
  206.         if (pos[0][1] == pos[2][1] && pos[1][1] == NONE && pos[0][1] == player){
  207.                 pos[1][1] = player;
  208.                 return 1;
  209.         }
  210.         if (pos[1][0] == pos[1][2] && pos[1][1] == NONE && pos[1][0] == player){
  211.                 pos[1][1] = player;
  212.                 return 1;
  213.         }
  214.         else return 0;
  215. }
  216. int mitteFrei(char pos[][3], char player){
  217.         if (pos[1][1] == NONE){
  218.                 pos[1][1] = player;
  219.                 return 1;
  220.         }
  221.         else return 0;
  222. }
  223. int eckeSetzen(char pos[][3], char player){
  224.        
  225.         if (pos[0][0] == NONE){
  226.                 pos[0][0] = player;
  227.                 return 1;
  228.         }
  229.         if (pos[0][2] == NONE){
  230.                 pos[0][2] = player;
  231.                 return 1;
  232.         }
  233.         if (pos[2][0] == NONE){
  234.                 pos[2][0] = player;
  235.                 return 1;
  236.         }
  237.         if (pos[2][2] == NONE){
  238.                 pos[2][2] = player;
  239.                 return 1;
  240.         }
  241.         else return 0;
  242.        
  243. }
  244. int randSetzen(char pos[][3], char player){
  245.         int i, j;
  246.         //Ich geh alle felder mit der for schleife durch weil wie anderen sowieso schon gesetzt sein müssten und ich das so einfacher finde.
  247.         //Bei einem 3x3 ist das auch nicht wichtig denke ich, da es keine geschwindigkeitsvorteile bringt nur die kantenfelder zu nehmen.
  248.         for (i = 0; i < 3; i++){
  249.                 for (j = 0; j < 3; j++){
  250.                         if (pos[i][j] == NONE){
  251.                                 pos[i][j] = player;
  252.                                 return 1;
  253.                         }
  254.                 }
  255.         }
  256.         return 0;
  257. }
  258.  
  259. // Allgemeine hilfsfunktionen
  260. //Ich könnte die benutzt haben, weis es aber nicht mehr...
  261. int anzahlZuege(const char spielfeld[][3]){
  262.         unsigned int i, j;
  263.         unsigned int anzahl = 0;
  264.         for (i = 0; i < 3; i++){
  265.                 for (j = 0; j < 3; j++){
  266.                         if (spielfeld[i][j] != '\0')
  267.                                 anzahl++;
  268.                 }
  269.         }
  270.         return anzahl;
  271. }
  272. char gegner(char spieleramzug){
  273.         if (spieleramzug == 'x')
  274.                 return 'o';
  275.         else return 'x';
  276. }