summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/tictac/tictac.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/noncore/games/tictac/tictac.cpp b/noncore/games/tictac/tictac.cpp
index e887b00..20cc942 100644
--- a/noncore/games/tictac/tictac.cpp
+++ b/noncore/games/tictac/tictac.cpp
@@ -223,155 +223,155 @@ int TicTacGameBoard::checkBoard( TicTacArray *a )
223 if ( i == nBoard ) 223 if ( i == nBoard )
224 won = TRUE; 224 won = TRUE;
225 } 225 }
226 } 226 }
227 if ( !won ) // no winner 227 if ( !won ) // no winner
228 t = 0; 228 t = 0;
229 return t; 229 return t;
230} 230}
231 231
232 232
233// -------------------------------------------------------------------------- 233// --------------------------------------------------------------------------
234// TicTacGameBoard::computerMove() 234// TicTacGameBoard::computerMove()
235// 235//
236// Puts a piece on the game board. Very, very simple. 236// Puts a piece on the game board. Very, very simple.
237// 237//
238 238
239void TicTacGameBoard::computerMove() 239void TicTacGameBoard::computerMove()
240{ 240{
241 int numButtons = nBoard*nBoard; 241 int numButtons = nBoard*nBoard;
242 int *altv = new int[numButtons]; // buttons alternatives 242 int *altv = new int[numButtons]; // buttons alternatives
243 int altc = 0; 243 int altc = 0;
244 int stopHuman = -1; 244 int stopHuman = -1;
245 TicTacArray a = btArray->copy(); 245 TicTacArray a = btArray->copy();
246 int i; 246 int i;
247 for ( i=0; i<numButtons; i++ ) { // try all positions 247 for ( i=0; i<numButtons; i++ ) { // try all positions
248 if ( a[i] != TicTacButton::Blank )// already a piece there 248 if ( a[i] != TicTacButton::Blank )// already a piece there
249 continue; 249 continue;
250 a[i] = TicTacButton::Cross; // test if computer wins 250 a[i] = TicTacButton::Cross; // test if computer wins
251 if ( checkBoard(&a) == a[i] ) { // computer will win 251 if ( checkBoard(&a) == a[i] ) { // computer will win
252 st = ComputerWon; 252 st = ComputerWon;
253 stopHuman = -1; 253 stopHuman = -1;
254 break; 254 break;
255 } 255 }
256 a[i] = TicTacButton::Circle; // test if human wins 256 a[i] = TicTacButton::Circle; // test if human wins
257 if ( checkBoard(&a) == a[i] ) { // oops... 257 if ( checkBoard(&a) == a[i] ) { // oops...
258 stopHuman = i; // remember position 258 stopHuman = i; // remember position
259 a[i] = TicTacButton::Blank; // restore button 259 a[i] = TicTacButton::Blank; // restore button
260 continue; // computer still might win 260 continue; // computer still might win
261 } 261 }
262 a[i] = TicTacButton::Blank; // restore button 262 a[i] = TicTacButton::Blank; // restore button
263 altv[altc++] = i; // remember alternative 263 altv[altc++] = i; // remember alternative
264 } 264 }
265 if ( stopHuman >= 0 ) // must stop human from winning 265 if ( stopHuman >= 0 ) // must stop human from winning
266 a[stopHuman] = TicTacButton::Cross; 266 a[stopHuman] = TicTacButton::Cross;
267 else if ( i == numButtons ) { // tried all alternatives 267 else if ( i == numButtons ) { // tried all alternatives
268 if ( altc > 0 ) // set random piece 268 if ( altc > 0 ) // set random piece
269 a[altv[rand()%(altc--)]] = TicTacButton::Cross; 269 a[altv[rand()%(altc--)]] = TicTacButton::Cross;
270 if ( altc == 0 ) { // no more blanks 270 if ( altc == 0 ) { // no more blanks
271 st = NobodyWon; 271 st = NobodyWon;
272 emit finished(); 272 emit finished();
273 } 273 }
274 } 274 }
275 *btArray = a; // update model 275 *btArray = a; // update model
276 updateButtons(); // update buttons 276 updateButtons(); // update buttons
277 delete[] altv; 277 delete[] altv;
278} 278}
279 279
280 280
281//*************************************************************************** 281//***************************************************************************
282//* TicTacToe member functions 282//* TicTacToe member functions
283//*************************************************************************** 283//***************************************************************************
284 284
285// -------------------------------------------------------------------------- 285// --------------------------------------------------------------------------
286// Creates a game widget with a game board and two push buttons, and connects 286// Creates a game widget with a game board and two push buttons, and connects
287// signals of child widgets to slots. 287// signals of child widgets to slots.
288// 288//
289 289
290TicTacToe::TicTacToe( int boardSize, QWidget *parent, const char *name ) 290TicTacToe::TicTacToe( int boardSize, QWidget *parent, const char *name )
291 : QWidget( parent, name ) 291 : QWidget( parent, name )
292{ 292{
293 QVBoxLayout * l = new QVBoxLayout( this, 6 ); 293 QVBoxLayout * l = new QVBoxLayout( this, 6 );
294 294
295 // Create a message label 295 // Create a message label
296 296
297 message = new QLabel( this ); 297 message = new QLabel( this );
298 message->setFrameStyle( QFrame::WinPanel | QFrame::Sunken ); 298 message->setFrameStyle( QFrame::WinPanel | QFrame::Sunken );
299 message->setAlignment( AlignCenter ); 299 message->setAlignment( AlignCenter );
300 l->addWidget( message ); 300 l->addWidget( message );
301 301
302 // Create the game board and connect the signal finished() to this 302 // Create the game board and connect the signal finished() to this
303 // gameOver() slot 303 // gameOver() slot
304 304
305 board = new TicTacGameBoard( boardSize, this ); 305 board = new TicTacGameBoard( boardSize, this );
306 connect( board, SIGNAL(finished()), SLOT(gameOver()) ); 306 connect( board, SIGNAL(finished()), SLOT(gameOver()) );
307 l->addWidget( board ); 307 l->addWidget( board );
308 308
309 // Create a horizontal frame line 309 // Create a horizontal frame line
310 310
311 QFrame *line = new QFrame( this ); 311 QFrame *line = new QFrame( this );
312 line->setFrameStyle( QFrame::HLine | QFrame::Sunken ); 312 line->setFrameStyle( QFrame::HLine | QFrame::Sunken );
313 l->addWidget( line ); 313 l->addWidget( line );
314 314
315 // Create the combo box for deciding who should start, and 315 // Create the combo box for deciding who should start, and
316 // connect its clicked() signals to the buttonClicked() slot 316 // connect its clicked() signals to the buttonClicked() slot
317 317
318 whoStarts = new QComboBox( this ); 318 whoStarts = new QComboBox( this );
319 whoStarts->insertItem( "Computer starts" ); 319 whoStarts->insertItem( tr( "Computer starts" ) );
320 whoStarts->insertItem( "Human starts" ); 320 whoStarts->insertItem( tr( "Human starts" ) );
321 l->addWidget( whoStarts ); 321 l->addWidget( whoStarts );
322 322
323 // Create the push buttons and connect their clicked() signals 323 // Create the push buttons and connect their clicked() signals
324 // to this right slots. 324 // to this right slots.
325 325
326 newGame = new QPushButton( "Play!", this ); 326 newGame = new QPushButton( tr( "Play!" ), this );
327 connect( newGame, SIGNAL(clicked()), SLOT(newGameClicked()) ); 327 connect( newGame, SIGNAL(clicked()), SLOT(newGameClicked()) );
328 quit = new QPushButton( "Quit", this ); 328 quit = new QPushButton( tr( "Quit" ), this );
329 connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) ); 329 connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) );
330 QHBoxLayout * b = new QHBoxLayout; 330 QHBoxLayout * b = new QHBoxLayout;
331 l->addLayout( b ); 331 l->addLayout( b );
332 b->addWidget( newGame ); 332 b->addWidget( newGame );
333 b->addWidget( quit ); 333 b->addWidget( quit );
334showMaximized(); 334showMaximized();
335 newState(); 335 newState();
336} 336}
337 337
338 338
339// -------------------------------------------------------------------------- 339// --------------------------------------------------------------------------
340 // TicTacToe::newGameClicked() - SLOT 340 // TicTacToe::newGameClicked() - SLOT
341// 341//
342// This slot is activated when the new game button is clicked. 342// This slot is activated when the new game button is clicked.
343// 343//
344 344
345void TicTacToe::newGameClicked() 345void TicTacToe::newGameClicked()
346{ 346{
347 board->computerStarts( whoStarts->currentItem() == 0 ); 347 board->computerStarts( whoStarts->currentItem() == 0 );
348 board->newGame(); 348 board->newGame();
349 newState(); 349 newState();
350} 350}
351 351
352 352
353// -------------------------------------------------------------------------- 353// --------------------------------------------------------------------------
354 // TicTacToe::gameOver() - SLOT 354 // TicTacToe::gameOver() - SLOT
355// 355//
356// This slot is activated when the TicTacGameBoard emits the signal 356// This slot is activated when the TicTacGameBoard emits the signal
357// "finished()", i.e. when a player has won or when it is a draw. 357// "finished()", i.e. when a player has won or when it is a draw.
358// 358//
359 359
360void TicTacToe::gameOver() 360void TicTacToe::gameOver()
361{ 361{
362 newState(); // update text box 362 newState(); // update text box
363} 363}
364 364
365 365
366// -------------------------------------------------------------------------- 366// --------------------------------------------------------------------------
367// Updates the message to reflect a new state. 367// Updates the message to reflect a new state.
368// 368//
369 369
370void TicTacToe::newState() 370void TicTacToe::newState()
371{ 371{
372 static const char *msg[] = { // TicTacGameBoard::State texts 372 static const char *msg[] = { // TicTacGameBoard::State texts
373 "Click Play to start", "Make your move", 373 "Click Play to start", "Make your move",
374 "You won!", "Computer won!", "It's a draw" }; 374 "You won!", "Computer won!", "It's a draw" };
375 message->setText( msg[board->state()] ); 375 message->setText( msg[board->state()] );
376 return; 376 return;
377} 377}