Saturday, December 15, 2012
Top 3 best places to play Free Live Chess online on the internet
There are so many sites to play live chess online on the web but some has too few members and it's hard to find someone to play with (opponent). Some sites has cool features and good interfaces but there are too much annoying ads and longer time to load meaning longer waiting times. Some websites has so small boards that you can't make it larger. Some has problems that I don't want to mention. Some sites are purely PAID (you have to purchase membership). I have tried and played on most of these sites but based on my own experience, these chess sites below are the:
Top 3 best places to play Free Live Chess online on the internet:
1. CHESS.COM ON FACEBOOK http://apps.facebook.com/chessfb/
Chess.com http://www.chess.com/ is the best place to play Chess online on the internet. You can play live chess, correspondence (email) chess, tournaments, chess videos to learn from, chess tactics trainer, chess openings, chess mentor (virtual chess coach). You can also join chess groups, solve the Daily Chess Puzzle, see the Game of the Day, Opening of the Day and much more.
You can either play on the Facebook site or the Chess.com site (bigger board). Lots of available players from all over the world, friendly seek graph, cool interface, play against the computer, play with your friends, chat, chess analysis, select from many chess rooms, put on your flag/country, picture or avatar, has a chess forum and so much more resources. Note that some features are available only for paid members. Also note that being a free member is good enough to enjoy playing chess!
2. Free Internet Chess Server (FICS) http://www.freechess.org/ using BABASCHESS Client http://www.babaschess.net/
Free Internet Chess Server (freechess.org) is a free chess server with over 300,000 registered users. It is one of the oldest and one of the largest internet chess servers in the world. Availability to play various chess variants. Excellent for any level of the player. You can play also against the computer or any player in the world that is available.
BabasChess is a Free Internet Chess Client (Chess GUI - Graphical User Interface) used for playing on the FICS server. BabasChess can run on Windows and Linux operating systems. It has a nice, attractive, fast and customizable playing environment, with chat, emoticons, sound effects and other cool features. It also has a powerful PGN viewer/editor, chess engines support for analyzing positions, solving mates, chess puzzles and other grandmaster or classic games. BabasChess is totally free and supports many different major languages in the world.
3. YAHOO CHESS http://ca.games.yahoo.com/games/login?game=Chess
You need a Yahoo ID and password in order to play. Once logged in, you can select from four rooms namely: Social, Beginner, Intermediate, and Advanced. When you select a room, wait for the Java applet to load. If you click the Play Now button, and an opponent is available, you can then press Start Game to start playing chess. You can also click the Create Table to make ready a table, set time, sound, show last move options. Once a table is created, you can Invite a player or Boot a player. The Sit button will allow you to join the game with the corresponding color (Black or White).
The Yahoo Chess Games site and server has many players from all over the world with different levels of strength. It has also a nice, easy to navigate, friendly, and cool graphical user interface.
Top 10 & Top 20 Greatest, Strongest, Best, Most Brilliant Chess Players in the World of All Time Ever in History
Note: This list is subjective.
Top 10:
1. Garry Kasparov
2. Bobby Fischer
3. Anatoly Karpov
4. Emanuel Lasker
5. Alexander Alekhine
6. Mikhail Botvinnik
7. José Raúl Capablanca
8. Vladimir Kramnik
9. Boris Spassky
10. Tigran Petrosian
Top 20:
11. Wilhelm Steinitz
12. Max Euwe
13. Vasily Smyslov
14. Mikhail Tal
15. Paul Morphy
16. Viswanathan Anand
17. Howard Staunton
18. Siegbert Tarrasch
19. Viktor Korchnoi
20. Paul Keres
Top 10 Chess Players with the Longest Reign of Championship:
Years as
Champion -- Rank ----- Name, Country of the World Champion
27 --------- 1 --- Emanuel Lasker (longest chess champion), Germany
17 --------- 2 --- Alexander Alekhine, Russia, France
16 --------- 3 --- Anatoly Karpov, Russia
15 --------- 4 --- Garry Kasparov, Russia, Azerbaijan, Soviet Union
13 --------- 5 --- Mikhail Botvinnik, Finland, Soviet Union
8 ---------- 6 --- Wilhelm Steinitz, USA & Bohemia *
7 ---------- 7 --- Vladimir Kramnik, Russia, USSR
6 ---------- 8 --- Tigran Petrosian, Georgia, USSR
6 ---------- 9 --- José Raúl Capablanca, Cuba
4 --------- 10 --- Viswanathan Anand, India
Bohemia * --> Czech Republic/Germany/Austria
Top 10 Chess Players with their Highest/Best Elo Ratings Ever Recorded:
Highest/Best
ELO Ratings --- Name of Grandmaster Chessplayer & (Country)
1. 2851 ------- Garry Kasparov (Russia, Azerbaijan, Soviet Union)
2. 2826 ------- Magnus Carlsen (Norway)
3. 2813 ------- Veselin Topalov (Bulgaria)
4. 2809 ------- Vladimir Kramnik (Russia)
5. 2803 ------- Viswanathan Anand (India)
6. 2788 ------- Alexander Morozevich (Russia)
7. 2787 ------- Vassily Ivanchuk (Ukraine)
8. 2786 ------- Levon Aronian (Armenia)
9. 2785 ------- Bobby Fischer (United States of America)
10. 2780 ------ Anatoly Karpov (Russia)
Friday, December 14, 2012
Chess Engine Programming - Checking the legal moves for White and Black on the first move
/*
PROGRAM 9: Chess Engine Programming - Checking the legal moves for White and Black on the first move
PURPOSE: On the first move of White, there are only 4 valid and legal Knight moves and also
4 valid legal Knight moves for Black, making a total of 8 acceptable Knight moves
on the first move. This program checks this validity using a hard coded method
but it can also be done by reading from a file containing a list of all the legal
moves on the first move of White or Black. It can also be tested using a procedure
by coding the rules how the Knight moves in 'L-shaped' fashion, and other methods
such as using a coordinate system and noting the "from square" (previous location)
going to the "to square" (destination location).
Also, on the first move for White, there are 16 legal and valid pawn moves and the
same is true for Black, making a total of 32 acceptable pawn moves on the first
move for White and Black. A total of 40 legal and valid moves (8 Knight moves and 32 Pawn moves)
are possible on the first move of White and Black.
This program assumes White is a Human Player and the Black Player is Computer. The user
(player) enters a move first then the program tests the validity or legality of White's
first move (in this case 20 legal moves). If White's move is acceptable, the Computer
player responds with a move. If White Human Player moves any other move beside the
20 acceptable moves, it will display an error to prompt the player "Illegal move.".
LANGUAGE: C++
AUTHOR: eternaltreasures
DATE: 2010 October 6
*/
#include <iostream>
#include <string>
using namespace std;
#define newline '\n'
string player_move;
string from_valid_move_choices = "e5";
int move_counter = 0;
int main ()
{
cout << endl;
cout << "Computer Chess Engine program 1.0" << endl << endl;
cout << "[Event: Chess Game Match]" << endl;
cout << "[Site: USA]" << endl;
cout << "[Date: 2010 October 6]" << endl;
cout << "[White: Human Player]" << endl;
cout << "[Black: Computer]" << endl << endl;
move_counter = move_counter + 1;
cout << "White Player: Please enter your move. " << move_counter << "."; cin >> player_move;
if ((player_move == "Nf3") || (player_move == "Nh3")
|| (player_move == "Nc3") || (player_move == "Na3")
|| (player_move == "a3") || (player_move == "a4")
|| (player_move == "b3") || (player_move == "b4")
|| (player_move == "c3") || (player_move == "c4")
|| (player_move == "d3") || (player_move == "d4")
|| (player_move == "e3") || (player_move == "e4")
|| (player_move == "f3") || (player_move == "f4")
|| (player_move == "g3") || (player_move == "g4")
|| (player_move == "h3") || (player_move == "h4"))
cout << "Thank you! Computer Player move is " << move_counter << "... " << from_valid_move_choices << endl;
else
cout << "Illegal move." << endl << endl;
}
PROGRAM 9: Chess Engine Programming - Checking the legal moves for White and Black on the first move
PURPOSE: On the first move of White, there are only 4 valid and legal Knight moves and also
4 valid legal Knight moves for Black, making a total of 8 acceptable Knight moves
on the first move. This program checks this validity using a hard coded method
but it can also be done by reading from a file containing a list of all the legal
moves on the first move of White or Black. It can also be tested using a procedure
by coding the rules how the Knight moves in 'L-shaped' fashion, and other methods
such as using a coordinate system and noting the "from square" (previous location)
going to the "to square" (destination location).
Also, on the first move for White, there are 16 legal and valid pawn moves and the
same is true for Black, making a total of 32 acceptable pawn moves on the first
move for White and Black. A total of 40 legal and valid moves (8 Knight moves and 32 Pawn moves)
are possible on the first move of White and Black.
This program assumes White is a Human Player and the Black Player is Computer. The user
(player) enters a move first then the program tests the validity or legality of White's
first move (in this case 20 legal moves). If White's move is acceptable, the Computer
player responds with a move. If White Human Player moves any other move beside the
20 acceptable moves, it will display an error to prompt the player "Illegal move.".
LANGUAGE: C++
AUTHOR: eternaltreasures
DATE: 2010 October 6
*/
#include <iostream>
#include <string>
using namespace std;
#define newline '\n'
string player_move;
string from_valid_move_choices = "e5";
int move_counter = 0;
int main ()
{
cout << endl;
cout << "Computer Chess Engine program 1.0" << endl << endl;
cout << "[Event: Chess Game Match]" << endl;
cout << "[Site: USA]" << endl;
cout << "[Date: 2010 October 6]" << endl;
cout << "[White: Human Player]" << endl;
cout << "[Black: Computer]" << endl << endl;
move_counter = move_counter + 1;
cout << "White Player: Please enter your move. " << move_counter << "."; cin >> player_move;
if ((player_move == "Nf3") || (player_move == "Nh3")
|| (player_move == "Nc3") || (player_move == "Na3")
|| (player_move == "a3") || (player_move == "a4")
|| (player_move == "b3") || (player_move == "b4")
|| (player_move == "c3") || (player_move == "c4")
|| (player_move == "d3") || (player_move == "d4")
|| (player_move == "e3") || (player_move == "e4")
|| (player_move == "f3") || (player_move == "f4")
|| (player_move == "g3") || (player_move == "g4")
|| (player_move == "h3") || (player_move == "h4"))
cout << "Thank you! Computer Player move is " << move_counter << "... " << from_valid_move_choices << endl;
else
cout << "Illegal move." << endl << endl;
}
How to program a chess engine in C++ language compatible with Xboard/Winboard: Selection of player color
This is a function called by the main () function to let the player select the color he/she prefers. Options include 'w' for selecting the White pieces and 'b' for selecting the Black pieces. The program checks the user input with the expected letters w or b. If the user enters any other letters or characters, it will display the valid selection choices.
Source code:
/*
PROGRAM 8: Chess Engine Programming - Selection of player color
AUTHOR: eternaltreasures
DATE: 2010 September 26
TITLE: How to program a chess engine in C++ language compatible with Xboard/Winboard:
Selection of player color
*/
#include <iostream>
#include <string>
using namespace std;
#define newline '\n'
void selectcolor ()
{
char playercolor = 'w';
cout << newline;
cout << "Please choose your color, w or b: ";
cin >> playercolor;
if (playercolor == 'w')
{
cout << "playercolor w=" << playercolor;
}
else if (playercolor == 'b')
{
cout << "playercolor b=" << playercolor;
}
else
{
cout << newline;
cout << "Please select:";
cout << newline;
cout << "w for White";
cout << newline;
cout << "b for Black";
cout << newline;
cout << newline;
cout << "Wrong player color=" << playercolor;
}
}
int main ()
{
selectcolor ();
return 0;
}
How to program a chess engine in C++ language compatible with Xboard/Winboard: New Game or Board Setup
This function lets the user enter n for a new game or s for board setup for analysis, solve for mate, etc. If the user enters any other characters other than n or s, it will display "Invalid entry" and show the correct choices. If the user selects the expected letters n or s, it will just display "New game = n" or "Board Setup = s". If the user enters the correct letters, a series of functions and statements will follow further to proceed to the other validations of the program (which will not be covered in this article). I will try to cover each function in the chess engine program categorically as possible to make it clear and focused to only one topic at a time.
Source code:
/*
PROGRAM 7a: Chess Engine Programming - New Game or Board Setup
AUTHOR: eternaltreasures
DATE: 2010 September 26
TITLE: How to program a chess engine in C++ language compatible with Xboard/Winboard:
New Game or Board Setup
*/
#include <iostream>
#include <string>
using namespace std;
#define newline '\n'
void newgame ()
{
char gamesetup = 'n';
cout << newline;
cout << "Enter n for New Game, s for Board Setup: ";
cin >> gamesetup;
if (gamesetup == 'n')
{
cout << "New Game = " << gamesetup;
}
else if (gamesetup == 's')
{
cout << "Board Setup = " << gamesetup;
}
else
{
cout << newline;
cout << "Invalid entry:";
cout << newline;
cout << newline;
cout << "Please Enter:";
cout << newline;
cout << "n for New Game";
cout << newline;
cout << "s for Board Setup";
cout << newline;
cout << newline;
cout << "Invalid entry = " << gamesetup;
cout << newline;
newgame ();
}
}
int main ()
{
newgame ();
return 0;
}
How to program a chess engine in C++ language compatible with Xboard/Winboard: Event, Site, Date, Game, Player info (pgn)
This function is called by the main () function to get the user input of his/her name and country of origin. An output pgn file is generated according to the standard chess pgn game file format. The date is obtained from the system date and the chess game result is yet unknown and so therefore '-' is placed.
Source code:
/*
PROGRAM 8: Chess Engine Programming - Event, Site, Date, Game, and Player information
AUTHOR: eternaltreasures
DATE: 2010 September 26
TITLE: How to program a chess engine in C++ language compatible with Xboard/Winboard:
Event, Site, Date, Game, and Player information for output pgn file
*/
#include <iostream>
#include <time.h>
#include <fstream>
using namespace std;
#define newline '\n'
void eventgameinfo ()
{
string eventname = "Chess Game Match";
string eventsite = "International";
time_t systemdate;
string whiteplayer = "White Player";
string blackplayer = "Black Player";
string gameresult = " - ";
cout << newline;
//Capture system date and time
time(&systemdate);
//Open the output game.pgn file
ofstream fout;
fout.open ("game.pgn");
cout << "Please enter your name: "; cin >> whiteplayer;
cout << "Your country of origin: "; cin >> eventsite;
cout << newline;
//Information of the Event, Site, Date, Game, Player and Result (for game.pgn file format)
cout << "[Event " << "\"" << eventname << "\"]";
cout << newline;
cout << "[Site " << "\"" << eventsite << "\"]";
cout << newline;
cout << "[Date " << "\"" << ctime(&systemdate) << "\"]";
cout << newline;
cout << "[White " << "\"" << whiteplayer << "\"]";
cout << newline;
cout << "[Black " << "\"" << blackplayer << "\"]";
cout << newline;
cout << "[Result " << "\"" << gameresult << "\"]";
cout << newline;
//Write to the game.pgn file
fout << "[Event " << "\"" << eventname << "\"]";
fout << newline;
fout << "[Site " << "\"" << eventsite << "\"]";
fout << newline;
fout << "[Date " << "\"" << ctime(&systemdate) << "\"]";
fout << newline;
fout << "[White " << "\"" << whiteplayer << "\"]";
fout << newline;
fout << "[Black " << "\"" << blackplayer << "\"]";
fout << newline;
fout << "[Result " << "\"" << gameresult << "\"]";
fout << newline;
}
int main ()
{
eventgameinfo ();
return 0;
}
Chess Engine Programming - the 3 most important elements of a chess engine which enable it to think and decide the best
Legal Move Generator
This chess engine component checks whether the moves are valid or legal. There are certain movement rules for each piece of the board as well as special moves. There are 5 important pawn moves: Promotion, En passant (e.p.), Capture, Two-square move, and one-square move. Knights move in L-shaped squares and can move backwards. Bishops move along diagonals of the same color and can also move backwards. Rooks move any number of squares straight vertically or straight horizontally. Castling is a special rook movement in which it jumps over the King. The Queen moves like a Bishop and a Rook. It moves along diagonals, files, and ranks any number of squares forward or backward. The King can move any direction as long as it is one square only. The only exception to this rule is when it is castling wherein it moves two squares. The Legal Move Generator also checks Draws by three-fold repetition, Draw by 50-move rule, Draw by insufficient material to checkmate, White King checks, Black King checks, Checkmate and more.
Score Evaluation Function
This is the "brain" of the chess engine. It "thinks" and forms the basis for decision of the chess engine. It assigns values for any situation within the board. For every movement of the pieces there is a corresponding score computed. For example a move leading to a checkmate would have a high score, an exchange leading to a material advantage, a pawn promotion, a move making the opponent's pieces in a cramped position, centered pawns, centered Knights, centered Bishops, isolated pawns, rook-pawns, doubled pawns, discovered checks, rook battery, absolute pin, forks, regular pin, etc.
Search Algorithm
Chess engine programmers often use the Minimax algorithm to search the best move possible in a given particular board position and situation. It takes and tests moves from the Legal Move Generator and checks to find the minimum score for the opponent while maximum score for the engine. Minimax can also be understood as an algorithm to search for the best possible move in a given situation. The more move turns (plies) it searches, the deeper and better will be the move that will be generated. Time is also a function to bring out the best move. Transposition tables also provide a superior search return. Searches from a book of similar played games with known variations leading to a win is also a good supplement.
Subscribe to:
Posts (Atom)