I am also taking an Artificial Intelligence class so I decided to add AI to my c++ project.Unfort I used abunch of IF statements to it.... Is there a better way to do this?
} } /* Declare Windows procedure */ LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); /* Make the class name into a global variable */ char szClassName[ ] = "WindowsApp"; int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { HWND hwnd; /* This is the handle for our window */ MSG messages; /* Here messages to the application are saved */ WNDCLASSEX wincl; /* Data structure for the windowclass */ /* The Window structure */ wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */ wincl.style = CS_DBLCLKS; /* Catch double-clicks */ wincl.cbSize = sizeof (WNDCLASSEX); /* Use default icon and mouse-pointer */ wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION); wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION); wincl.hCursor = LoadCursor (NULL, IDC_ARROW); wincl.lpszMenuName = NULL; /* No menu */ wincl.cbClsExtra = 0; /* No extra bytes after the window class */ wincl.cbWndExtra = 0; /* structure or the window instance */ /* Use Windows's default color as the background of the window */ wincl.hbrBackground = (HBRUSH)CreateSolidBrush(RGB(255,3,3)); //http://cboard.cprogramming.com/windows-programming/113200-window-background-color.html /* Register the window class, and if it fails quit the program */ if (!RegisterClassEx (&wincl)) return 0; /* The class is registered, let's create the program*/ hwnd = CreateWindowEx ( 0, /* Extended possibilites for variation */ szClassName, /* Classname */ "Tony's Amazing Tic Tac Toe", /* Title Text */ WS_OVERLAPPEDWINDOW, /* default window */ CW_USEDEFAULT, /* Windows decides the position */ CW_USEDEFAULT, /* where the window ends up on the screen */ 380, /* The programs width */ 395, /* and height in pixels */ HWND_DESKTOP, /* The window is a child-window to desktop */ NULL, /* No menu */ hThisInstance, /* Program Instance handler */ NULL /* No Window Creation data */ ); CreateWindow("button", "1", WS_CHILD | WS_VISIBLE |BS_DEFPUSHBUTTON, 50, 10, 50, 50, hwnd, (HMENU)BUTTON1, GetModuleHandle (NULL), NULL); CreateWindow("button", "2", WS_CHILD | WS_VISIBLE |BS_DEFPUSHBUTTON, 150, 10, 50, 50, hwnd, (HMENU)BUTTON2, GetModuleHandle (NULL), NULL); CreateWindow("button", "3", WS_CHILD | WS_VISIBLE |BS_DEFPUSHBUTTON, 250, 10, 50, 50, hwnd, (HMENU)BUTTON3, GetModuleHandle (NULL), NULL); CreateWindow("button", "4", WS_CHILD | WS_VISIBLE |BS_DEFPUSHBUTTON, 50, 110, 50, 50, hwnd, (HMENU)BUTTON4, GetModuleHandle (NULL), NULL); CreateWindow("button", "5", WS_CHILD | WS_VISIBLE |BS_DEFPUSHBUTTON, 150, 110, 50, 50, hwnd, (HMENU)BUTTON5, GetModuleHandle (NULL), NULL); CreateWindow("button", "6", WS_CHILD | WS_VISIBLE |BS_DEFPUSHBUTTON, 250, 110, 50, 50, hwnd, (HMENU)BUTTON6, GetModuleHandle (NULL), NULL); CreateWindow("button", "7", WS_CHILD | WS_VISIBLE |BS_DEFPUSHBUTTON, 50, 210, 50, 50, hwnd, (HMENU)BUTTON7, GetModuleHandle (NULL), NULL); CreateWindow("button", "8", WS_CHILD | WS_VISIBLE |BS_DEFPUSHBUTTON, 150, 210, 50, 50, hwnd, (HMENU)BUTTON8, GetModuleHandle (NULL), NULL); CreateWindow("button", "9", WS_CHILD | WS_VISIBLE |BS_DEFPUSHBUTTON, 250, 210, 50, 50, hwnd, (HMENU)BUTTON9, GetModuleHandle (NULL), NULL); CreateWindow("button","Start Game!", WS_CHILD | WS_VISIBLE |BS_DEFPUSHBUTTON, 130, 300, 100, 50, hwnd, (HMENU)BUTTON10, GetModuleHandle (NULL), NULL); /* Make the window visible on the screen */ ShowWindow (hwnd, nFunsterStil); disablebuttons(hwnd); /* Run the message loop. It will run until GetMessage() returns 0 */ while (GetMessage (&messages, NULL, 0, 0)) { /* Translate virtual-key messages into character messages */ TranslateMessage(&messages); /* Send message to WindowProcedure */ DispatchMessage(&messages); } /* The program return-value is 0 - The value that PostQuitMessage() gave */ return messages.wParam; } /* This function is called by the Windows function DispatchMessage() */
} switch(LOWORD(wParam)) { case BUTTON10:{ srand (time(NULL)); /* generate secret number between 1 and 10: */ v1 = rand() % 10 + 1; enablebuttons(hwnd); if (v1 <= 4){ MessageBoxA(hwnd,"computer goes first!","TicTacToe",MB_OK|MB_ICONINFORMATION); computerturn(hwnd); }
if (v1 >= 5){ MessageBoxA(hwnd,"Person goes first!","TicTacToe",MB_OK|MB_ICONINFORMATION);}
} }
break;
case WM_DESTROY: PostQuitMessage (0); /* send a WM_QUIT to the message queue */ break; default: /* for messages that we don't deal with */ return DefWindowProc (hwnd, message, wParam, lParam); } return 0; } [/CODE]
Compared to the 7735HS it is around 25-30% slower in multi-threaded tasks (according to Google search)
I did a review of the 7735HS Beelink SER6 Max in 2023, but thinking about it, it's not comparable to the 7730U.
For the example you gave about how it will be used, the 7730U is actually an excellent choice for its power and battery efficiency.
Yes guys I know we have a memory and storage price gouging thanks to AI datacenters, so basically you are complaining when these crazy prices get discounts. It all starts to sound like the price of gas and a loaf of bread "was so much cheaper ten years ago!"
Go wait until 2030 or whenever this BS ends and skip commenting then?
Damned if ya do, damned if ya don't... 🙄
Question
togermano
I am also taking an Artificial Intelligence class so I decided to add AI to my c++ project.Unfort I used abunch of IF statements to it.... Is there a better way to do this?
download here:
http://togermano.com/homework/cpp/tonysAItictactoe.exe
Link to comment
https://www.neowin.net/forum/topic/1148860-now-my-c-tictactoe-has-some-ai-to-it-and-will-play-against-a-computer/Share on other sites
13 answers to this question
Recommended Posts