Chess engine in C [closed] - c

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I'm a 17 year old high school student who just started to learn C programming 1 week ago. I've also had some very basic experience in web design(+ a little web programming with javascript and php. I once made a website with contact form).
Anyway, I'm very interested in AI and as a school project, I thought that i'll build a chess engine and a robotic arm that physically moves the pieces.
Now, my deadline for which i have to finish the engine is 7 months away, (and the arm has to be completed in a year).
Do you think it's feasible for a total beginner to program a chess engine in 7 months(and eventually build a robotic arm using that engine?)
Thank you very much!

lol, great ambition, but it will take a hurculean effort on your part to get it done. Building the engine itself in your spare time will take quite a bit, as the AI for a chess game is pretty complicated, you have to tell the program to think ahead at least 7 moves with an end goal in mind, not to mention you will have to program the piece that interacts with the robot arm. You could theoretically cheat/not reinvent the wheel by utilizing some open source chess game and save yourself a few months of programming just in that piece.

I think, that it is better to choose some real task to start with for practice. Of course, you can divide the task in steps. But in chess the first step - GUI - is real for you. But the second - the most primitive AI - is extremely hard. It is the specific of the game.
If you take reversi/othello as the subject game, then creating a very primitive AI could be possible. I don't believe that you can manage recursive thinking, but one-step thinking, with evaluation of the positions and of course, the GUI for the game is possible. But you will have to work really hard. If you are interested, I could give you a pair of advices for this game realzation - I did it myself twice on different machines. But robotic hand is out of question.
Of course, if you are a genius, you can manage everything. ( I am not joking. You can never tell...)
And C is not the best language for AI. It is not even one of better ones.

Related

Integrate C library with Java, Ruby, Node, Python, Go, .NET [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Status Quo
For a project of mine I need a client library that communicates with my API for every major programming platform. Currently I implemented just one (Java) and was thinking 'I don't want to do this 8 times (or hope someone else will)'.
The client is relatively small, but not trivial; does mostly JSON reading/writing and sending TCP/UDP data over SSL. Every call to the client is fire-and-forget, so it works completely asynchronously in its own thread.
Problem
I was asking myself if it made sense to write a single C library and integrate it with the other platforms.
I did a bit of research and it seems every platform deals with this differently (obviously) with varying necessary efforts. I also realised that I never saw something like it - for example database drivers always seem to be written from scratch rather than using a C library at the core. Is the overhead too big?
I also read about Thrift, Protocol Buffers etc. - but this seems to be aimed at network interoperability?
Question
So the final question is:
Is it feasible to use a single C library at the core of each platform's client? If yes: how should it be done?
Using a C library makes sense if you want to consolidate all implementations of the same functionality into one piece of code - it is probably the only language that can be universally used by higher level languages.
Your work would be significantly easier if you could automate the process to a degree. You might want to have a look at SWIG. It is a binding generator that allows C/C++ code to be used with a large number of other programming languages, including most, if not all, of the languages that you mentioned.
For my rather superficial experience with it, SWIG does a rather decent job, although the generated code does occasionally need some tweaking...

Game programming in C, where do I get started? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I started programming about 6 months back and have a decent knowledge in how to code in C. I have mainly used it to implement elementary algorithms or solve Project Euler questions (reached 50 now :) )
What I really want to learn since a long time is game programming. Ie make simple 2D games like snake, or pocket tanks. By simple, I no way mean the amount of work or effort it's going to take to make these games
I've tried searching the net but have had no luck with that. Could anyone point me in the right direction?
What exactly will I need to learn? Where do I start?
Game Programming requires a lot of Computer Science stuff on top of creativity. By Computer Science stuff I mean Algorithms, Data Structures, Computer Architecture, Computer Graphics, Operating System Internals, Artificial Intelligence & at least basic familiarity with Mathematics & Physics + experience on playing Games + Passion for Games. As you seem to be a good Algorithmic coder (Coding problems on Project Euler) so it should not be very difficult for you.
Now coming to your question one simple way to start is: Microsoft XNA (which lets you just go into game programming without having too much knowledge on above areas, ofcourse having it will be an advantage for you in longer run). Check it out: http://en.wikipedia.org/wiki/Microsoft_XNA
You can also check out this book: http://www.amazon.com/Beginning-Game-Programming-Michael-Morrison/dp/0672326590/ref=pd_sim_b_4
I have read the above (It's in C/C++/Win32) and it is really a good resource on implementing basic games which will give you a very good start to jump to XNA as a next step.
You could go with graphics.h. I am saying this because, when I were in your stage, I began with Worm and nibbles game, a very easy game, which can be constructed with drawPoly function. I used drawPoly as my implementation, but you could use you won.
In addition to that, graphics.h will provide many user-defined functions, to draw lines,rectangles,polygens. It also provide functions to color them in many different ways.
So, When you want to start gaming in C, I would suggest graphics.h as a good starting point.

Can you please provide some topic ideas related to AI to be used in a project? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I need topic ideas related to AI on which I will base my thesis. I am mostly interested in Genetic Algorithm and Neural Networks techniques. I already got the some ideas, but non of them seems to hit me!
Any help will be really appreciated!! :)
Russ Greiner has a great list of project topics for his machine learning course, so that's a great place to start.
Both GAs and ANNs are learners/classifiers. So I ask you the question, what is an interesting "thing" to learn? Maybe it's:
Detecting cancer
Predicting the outcome between two sports teams
Filtering spam
Detecting faces
Reading text (OCR)
Playing a game
The sky is the limit, really!
I think your thesis should involve a project of a high-carnage shooting game in the style of Smash TV or Crimsonland that uses the player as the fitness function for a GA engine: generating behavioral control code for the enemies and evaluating fitness by how long the controlled entity survives and/or how much damage it does to the player.
That'd be fun.
What's a problem that you are passionate about? If you pick something that you love and are interested in you will undoubtedly do a better job and learn more. I love finance but it is not for everyone. GA's are best at optimization problems so maybe portfolio optimization using GAs and ANNs.
Maybe predict which blog posts someone will like. I have always wanted to do that but I have not gotten around to it?

Most significant present-day AI developments? [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 10 years ago.
What do you consider the most significant progress / breakthroughs in real world applications of present-day AI research? (including, but not limited to: machine learning, statistical data processing, and other disciplines spinned off from AI).
Please spare / do not want: ramblings about AI winters / disappointment;
Do want: links, and pointers to concrete real-world applications.
I think the most significant breakthrough is that real world consumer applications actually utilize AI routinely today. It has become common, and is not just mere curiosity of academic research and special applications any more, like it was ten years ago. Some examples:
Speech and text recognition (e.g. iPhone).
Face recognition in digital cameras.
Search engines.
Email spam filtering.
Automatic gearboxes of cars.
Games.
etc.
It's all around us! :-)
I would add autonomous robots like those in the DARPA challenges to the list. Driving through a desert or rural area, recognizing the terrain, avoiding ostacles, finding paths and so on are definitely tough AI problems.
Actually, AI research is having a renaissance and has been for the past 5-8 years or so.
Back when neural networks were all the rage in the 70s and 80s, they were showing such promise in solving simple tasks that people's hopes were sky-high for the whole field of AI. Then, when it turned out to be very difficult to move on from the very simple tasks to real-world problems like language acquisition, a lot of people became disillusioned. Until recently, that is.
I am not the best person to ask -- being no AI expert -- but I believe some of the most promising areas are:
Semantic search and data mining (including text classification)
Statistical machine translation
'Real intelligence' HTMs (read Jeff Hawkins' On Intelligence)
Relevance / Recommendation engines (essentially a hybrid of data mining and network analysis)
Visual object recognition
as per #mad-j game bots A.I. has come a long way: link to bots get smart
alt text http://www.spectrum.ieee.org/images/dec08/images/bot01.jpg
I think real/strong AI has lost it way, for decades the speaking/understanding computer was going to be available 'in the next 5 years'. Then we ended up with Dragon (no connection) which doesn't understand anything, it's a clever microphone, and it's a while since I've heard anything about AI - it's just not mainstream anymore, because it is too damn hard. One thing I think has been proven beyond doubt real AI, as in thinking machine, Turing Test passing AI - is still a (very) long way away. Don't get me wrong, there's tons of good research going on, but we'll have to wait 200-500 years for a result.
My gut feel is they'll be some interesting stuff coming out of massively parallel systems, especially ones built with really simple nodes. And if I had to point at a single AI breakthrough I'd be looking at spin offs from the nano-tech field, getting really small and seeing what cells in the brain are up to - science fiction it is, but we'll crack it one day.

Beginner's guide to 3D graphics programming [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
What are the best guides / tutorials / books / websites for someone with minimal experience (or none) in the world of 3D graphics programming?
I realize that the fundamentals of 3D graphics and mathematics apply across platform specific 3D library implementations such as OpenGL, DirectX, WPF etc..
Therefore it would be useful if answers would explain if they focus on a specific library implementation, on the fundamentals, or maybe both.
Rationale for for asking this question:
With Windows Presentation Foundation (WPF) 3D on the scene, it's realistic for many programmers to now seriously consider using 3D for their applications, where this would have been almost impossible even a few years ago.
I'm sure there are many programmers out there, like me, who find the leap from 2D to 3D a very big one.
I recommend that you implement a simple software based 3d rendering engine. Simple stuff like line, quads, lighting etc. You will learn a whole lot more about 3d programming in general, and it will give you a good prescriptive on 3d graphics and it's limitations.
This should get you started:
http://www.devmaster.net/articles/software-rendering/part1.php
Petzold's 3D Programming for Windows is an obvious start if you are doing WPF.
For Opengl the book is available free online , there are also tutorials at NeHe although OpenGL does require that you understand the details of transforms to really do more than cut and paste
I thought I'd start by providing this resource I found during my own research:
The Twelve days of WPF 3D by Eric Sink.
It is a series of articles focusing on WPF, from the beginner to intermediate level.
It focuses on getting practical things done with WPF 3D, rather then fundamental 3D math etc, but is great for answering some common questions most WPF 3D programmers eventually come across.
One site I have been recommended previously is GameDev. It is full of articles and tutorials for 3D game development.
What do you want to learn to do? build a graphics / game engine? or USE a graphics or game engine? ..
I chose the easy route. I am using an available engine - www.3dgamestudio.com - so I can focus on the actual game. I feel that reinventing the wheel takes too much time.
A good handle on the math behind things can be useful. This tutorial is a good place to start.
One book I'd definitely recommend is Computer Graphics by Foley and Van Dam.
Here is a good hands-on tutorial for getting started quickly with a little bit of mathematical theory included: http://www.kindohm.com/technical/wpf3dtutorial.htm

Resources