Chess 1v1 39;

0 views
Skip to first unread message

Francoise Witsell

unread,
Aug 3, 2024, 4:37:54 PM8/3/24
to utererla

Its primary goal is to allow two persons to play a round of chess, no matter whether they happen to be at the same location or on a different continent. It's designed to be platform independent and to run on every computer or smart phone equipped with a modern web browser and thus enabling people everywhere around the globe to play chess, at home and on the go, online and offline.

When playing, you can se a little light bulb (?) on the bottom left, allowing you to switch on 'awareness mode'. This special mode colorizes the fields depending on which player has more pieces that can access it: Green means that white has more control over a field and red means black. Blue means both players have an equal number of pieces that can possibly strike on it. The richer and darker the color, the more pieces have access.

The color code is not a recommendation which fields to move on, it's not artifical intelligence or anything of the like. You still have to use your brains, the color code just helps you not to overlook anything.

Its minimalistic approach sets it apart from most of the other chess implementations on the internet. They usually use browser plugins like Adobe Flash or even client software to realize the game itself and offer a variety of features around it: news, riddles, communities and dozens of little gadgets.

Due to this complexity they often take a lot of clicks to get a game started, they tend to react slowly and are often cluttered with ads. Some even require registration fees in order to be able to play a game. PlainChess is free, fast and built on modern web technologies but on the other hand also passes on features beyond basic gameplay.

Spread the word, tell your friends and enemies about PlainChess; twitter, blog or write letters about it. Share it on your social networks. Send me an e-mail. Have a look at the code and add new features.

The game engine is written in JavaScript and relies on the frameworks jQuery and jQuery UI, which means that offline games can be played without internet connectivity (this would be interesting for a smart phone optimized version with HTML5 manifest).

I'm Tim Wlfle from Germany and wanted to try out the new possibilities HTML5 technologies offer. At the same time I wanted to play a quick round of chess with a friend on the internet, but didn't find anything that would allow me to start right away and without registration.

There's a free app on Google Play (for Android, I assume it's available for Apple, too) called "Chess" by cnvcs.com. Hit "Play" and "Options" and it can be set so that both sides are "Player" and not "Computer." I can also be set so that people with two phones, each with that app, can play each other by Bluetooth or WiFi, and they can also play online.

The app also has 38,000 great tactics problems in several levels of difficulty, which is my main use for it. It's chess engine (computer game program) plays a good game, but I'd rather use the Droidfish app for playing chess against the computer or analysis on a smartphone.

+1 for making it more intuitive. The iOS app is fantastic - beautiful, responsive - but some things are hard to find. Like muting chat during s game, and that "play vs computer" includes playing another human. Maybe label it "local play" or " play on device".

When playing human vs. human the board flips after every move, making it nearly impossible to play an actual game with a real-life human opponent. Is there a way to prevent the flipping so that the ipad simply acts like an old-fashioned chess board?

Your post represents your move, but you move based on what color went last. The order is that of all chess games, white then black. So make sure to check which color the last poster was so you know who to move as. Note, if someone posts before you, then they're move is what occurs. I will step in and call moves if they are invalid.

Every Friday I will be up to running chess games with whoever wants to and give a more 1v1 experience . So let me know, and we can run our games off of Steam, Skype, the forum private messages or whatever you have in mind!

For this project, we will be using E.R.A., the Everything Robotic Arm we made in our previous project to execute each move. This is because ERA has a huge range of motion and implemented inverse kinematics.

(Note: In this match all Alex has to do it tell the robot what his move is. Everything else is automated. In the second/Stockfish match, Alex has to relay the moves calculated by the engine on the computer.)

It takes a lot to make these projects and distribute them for free. If you enjoy my work, please consider becoming a free or paid subscriber. It helps me get noticed and is a great way to show support.

The basic idea behind this robot is that a chess engine will send it coordinate positions where to move on a chess board, than the robotic arm will execute a sequence of moves to grab the piece securely, and place it at the next position sent to it by the chess engine.

To go in more detail, a microcontroller will send the robot a position from [1, 1] - [8, 8] detailing which piece it needs to move toward on the chess board through serial communication. The first number represents the row, and the second represents the column. For example, if it were to send [2, 4] the robot would know to move to the second row, and fourth column to grab the piece.

They have great prices (only $5) and their entire process is very simple and streamline. All I had to do was go to PCBWay.com, click on quick-order PCB, and upload the Gerber file for the new board. Or alternatively, just go here which I have saved in my favorites bar.

NOTE: If you order your ESP32-S3 through Teyleten, the boards are slightly thicker than the official boards from Espressif. This PCB is designed to fit the official boards, but you can still make it work.

Something else important to keep in mind is that if you power up the ESP32-S3 through serial and external power it could overheat the microcontroller. I left my ESP32-S3 regulator unattached until I was completely done.

The wiring for this ESP32-S3 is pretty simple. All you have to do for hooking up the serial communication for Micro-Max is put a wire on GPIO17 & 18. Then, plug 17 into RX on the PCB/Smoothboard, and 18 into TX. This is because GPIO17 & 18 on the ESP32-S3 are the built in serial one pins. We can connect them by plugging TX on one to the RX on the other, and RX on one to the TX on the other.

A HIGH state is the default for the chip. This means if we want to play a file, we need to send a binary number to the chip through LOW states. For example, we currently have four pins connected to the chip, I chose four because I only have 11 audio files that need to be played and four binary digits can go up to 16 (2^4). If we want to play file one on the chip, we will write it a one in binary: 0-0-0-1. If we want to play the file two we will write a two in binary: 0-0-1-0. If we want to play the file three we will write a three in binary: 0-0-1-1, and so on. And again, this is done by digitalWriting LOW states. (If we wanted to play file nine, the binary would be 1-0-0-1, meaning the first GPIO would be LOW, middle two are HIGH, and last one is LOW).

To load whatever voice files you desire onto the chip, just find whichever MP3 file you want to play online (I used FreeTTS to generate the speech files that ChatGPT inspired), then connect the chip to your PC via micro-USB and drag the MP3 files over to the device. Then, rename the files as 0001 for one, 0002 for two, 0010 for ten, 0100 for one-hundred, 0255 for two-hundred and fifty-five, etc.

Something else really neat about this gripper is that, if you noticed, the plastic actually flexes a bit when you grab a piece. This is awesome because it means the motor wont stall/overheat. This is due to the properties of the 3d-printed plastic. Since the servo motor is still able to move when grabbing a piece, the current draw remains low in the motor while a strong grip force builds up proportionally to the elasticity of the plastic. Pretty cool, right?

The robot would skip steps sometimes, meaning I would have to re-home the robot. It would sometimes miss the piece due to error in what could be many different areas, including the inputted piece coordinates, inverse kinematics calculations, step calculations and many other things. The robot would also get quite hot at times, which if left unsupervised could melt the plastic or damage the motors.

With the robot now ready to start, we need to start listening for any Serial1 inputs that are being sent from the other controller. When we get an number, we can isolate the 10s and 1s digit through division and use of the modulus operator. If we want to do manual input such as for the Stockfish engine, we just change Serial1.read() to Serial.parseInt() and Serial1.available() to Serial.available().

Next up is some pretty important code. This code will translate the calculated theta values from our inverse kinematics function into steps, while also finding the relative max distance from the target position. I wont explain the translation part since I did it here, but the point of finding the max steps is so that we can calculate the motor speed so that we can ensure all of the motors arrive to their position at the same time. This is nice because it means that the gripper will move in a straight line when approaching a piece, ensuring no other pieces fall over. It also makes it so that all the joints will arrive in a set amount of time which is helpful in calculating the delay in the Micro-Max code.

Since the robot needs to wait for new serial input to move to the next piece, we introduce a delay to hold the program until the robot is ready. Since the speed code we made makes it take three seconds to reach the position, we can calculate the desired delay time. While doing this, we can also generate a random number to play whatever audio file.

c80f0f1006
Reply all
Reply to author
Forward
0 new messages