Small Basic Forum
UCI Chess Engine - Printable Version

+- Small Basic Forum (https://litdev.uk/mybb)
+-- Forum: Small Basic (https://litdev.uk/mybb/forumdisplay.php?fid=1)
+--- Forum: Challenges (https://litdev.uk/mybb/forumdisplay.php?fid=5)
+--- Thread: UCI Chess Engine (/showthread.php?tid=75)

Pages: 1 2


UCI Chess Engine - Scout - 05-22-2024

After finding out how to access the UCI interface with the help of an introductory video, it is now possible to write a chess engine with Small Basic that can be integrated into chess programs.
The C# videos and further information can be found in the following thread: https://litdev.uk/mybb/showthread.php?tid=74

But there is still a long way to go to the first usable engine.
The 4 episodes of the C# video tutorial must be implemented in Small Basic and in C# programs.


Episode 1: Hello World

Code:
'Position Textwindow
TextWindow.Left = Desktop.Width/2+1
TextWindow.Top    = Desktop.Height/2+200
'Movelist for black
Move[1] = "bestmove e7e5"
Move[2] = "bestmove a7a6"
Move[3] = "bestmove b7b5"
Move[4] = "bestmove g8f6"
Move[5] = "bestmove g7g6"
Move[6] = "bestmove h7h5"
Move[7] = "bestmove f8g7"
Move[8] = "bestmove b8c6"
Movecount = 1
'LDTextWindow.Hide()
LDTextWindow.UpdateShowHide = "False"
LDTextWindow.Minimise()
While ("True")
  'TextWindow.PauseIfVisible()
  commandline = TextWindow.Read()
  command = LDText.Split(commandline," ")
  if(command[1] = "uci") Then
    TextWindow.WriteLine("uciok")
  ElseIf(command[1] = "isready") Then
    TextWindow.WriteLine("readyok")
  ElseIf(command[1] = "position") Then
    'Board Update
  elseif(command[1] = "go") Then
    'TextWindow.WriteLine("bestmove e7e5")
    TextWindow.WriteLine(Move[Movecount])
    Movecount = Movecount + 1
  Else
    TextWindow.WriteLine("info string "+ commandline)
  endif
  Program.Delay(7)  
EndWhile

Integrating the exe file as an engine into a chess program is described in the C# thread and in the videos.

   

What is also annoying is that the text window cannot be hidden and it has no content.
But since it can be moved to the side, it is still acceptable.

Update: 
With the features LDTextWindow.UpdateShowHide = "False" and LDTextWindow.Minimise() the text window can be minimized to the taskbar.
This requires the Litdev extension 1.2.28.0 or higher. Alternatively, the two lines can be commented out and the text window will appear on the screen.

Note:
If the SB_UCI.exe engine is distributed or copied to another directory, the DLLs Litdev.dll and SmallBasicLibrary.dll must also be included!


RE: UCI Chess Engine - litdev - 05-23-2024

Updated LitDev extension Beta (1.2.28.0) to better manage TW hide and show.  There are a couple issues:

1] TextWindow.Read for example will show the TextWindow if currently hidden
2] TextWindow object keeps track of the current state and this is not updated if the user minimises window for example

This is why minimising TW with Cute Chess works - it is minimised but SB thinks it is shown.

Try using:

Code:
LDTextWindow.UpdateShowHide = "False"
LDTextWindow.Minimise()

or

PHP Code:
LDTextWindow.UpdateShowHide "False"
LDTextWindow.Hide() 

The new property UpdateShowHide (default True) will also update the internal variable, which in this case you don't want since we want TextWindow.Read to think the window is currently shown when in fact it is hidden or minimised.  Its all a bit hacky, but we are working within the original SB code.


RE: UCI Chess Engine - Scout - 05-23-2024

After downloading Litdev_Beta.zip and copying the dll and xml into the lib directory of SB, the new text window methods are not recognized!?
The file version is 1.2.28 but the date is May 3rd.
Is litdev.uk not updated yet?


RE: UCI Chess Engine - litdev - 05-23-2024

Sorry, my mistake - hopefully uploaded correctly now - I tested the download.

I have been playing with your chess program, not following the Youtube so much, but doing it more suitably for Small Basic, first mimicing the game state (mostly done this), next finding valid moves, then choosing one that is at least not a terrible choice.


RE: UCI Chess Engine - litdev - 05-24-2024

Scout,

Please ignore if you are working on this and having fun working it out on your own, but I got interested and this is my work so far BKJK641.000 - it plays OK (as black only in this version) with Cute Chess, but with poor endgame.  I guess the uploaded chess piece images are yours Smile .

EDIT

Minor update to run as Black or White player, BKJK641.000-0.


RE: UCI Chess Engine - Scout - 05-24-2024

Litdev,

it's incredible how quickly you can create a chess program. This way I can take a shortcut and not necessarily go through C# MinimalChess. It's a hard road for me to create a new C# program with the videos and the inconsistent source code.  Sad
I think your program is a good starting point and I can compare MinimalChess and Chessforeva with it. Shy
The pieces are from Chessforeva and I modified them to 64x64bit Gif. I assume there are no copyright issues here.
I tend to use font pieces for the engine display anyway so that it doesn't get too big.

Thank you very much
Scout


RE: UCI Chess Engine - litdev - 06-03-2024

Scout, 

I thought this may interest you, I found a SB chess program from around 2019 in my files - Unfortunately I can't remember who wrote it, but it's quite nice written by someone who clearly knows something about chess, CCBF116.000.

EDIT Based on database of historical SB forum files I think this was written originally by backtothestart, TKM405.

Also, if anyone fancies some 3D challenge, there are some nice free 3D chess pieces out there for fancy visualisation, below is some I had a go with.

[Image: 3DChess.png]


RE: UCI Chess Engine - AbsoluteBeginner - 06-04-2024

(translated by Google translator)

Hi all.
Nine years ago I was looking for something new in this ancient game called "Chess".
Then I thought that this game could be improved by adding new features.
I didn't change the rules of the game, but I added more cells and figures to the field.
Here's what I got.

   
   

At that time, programming in Small BASIC was not as convenient as it is now using SB-Prime.
If anyone also wants to give an ancient game a new life on a new playing field, then maybe that person will like my version. Rolleyes


RE: UCI Chess Engine - litdev - 06-04-2024

AB,

64 square chess is hard enough!  Do you have the SB code for this?


RE: UCI Chess Engine - AbsoluteBeginner - 06-04-2024

(06-04-2024, 02:02 PM)litdev Wrote: AB,

64 square chess is hard enough!  Do you have the SB code for this?

Yes, 64 chess squares are really difficult if a person knows how to play well. I know from myself that for a person who is an amateur in chess, an 8 by 8 field very soon becomes small.  Wink
A person begins to feel as if he has been playing the same thing for several years now.

And then the idea comes to mind to make a large field and have many figures.
And dreamers like me, in addition, come up with the idea of adding “fog of war” (!) to the game. ( Imagine: each piece has a customizable ability to SEE enemy pieces at a distance of several cells. Pawns can see at a distance of 3 or 4 squares. The queen can see the enemy at a distance of 6 or 8 squares, for example. )
Can you imagine a chess battle in conditions where you don’t see your opponent’s pieces until they are close enough?!
This is great! Isn't it true?!

I still have the code. But this code is not completed yet.
This is working. The program allows you to move all the pieces, so two people can play. It seems to me that I made a function for saving an unfinished batch. ( I don't remember exactly anymore. Besides, nine years ago I was even more of a complete absolute beginner than I am now. )

Rolleyes