Easy way to show a GUI development to a C introduction course - c

I´m a tutor in a programming introduction course.
Tomorrow i will lecture the class.
The course is a Laboratory of Programming, and we use C in a Linux Envoriment.
I think about do some different exercises to then, because CLI development is really boring.
So anyone can recommend some exercises and some VERY easy library were i can teach a GUI basic development ?

http://www.lugod.org/presentations/gtk/gui.html
Google is full of tutorials on C-callable GUI frameworks. That's just the first one.

I have taught C programming and I would stay away from GUIs in an intro class. If you want to do something fun, consider making a simple game with ASCII art, like a really simple version of nethack or something.
GUI programming in C is a frustrating experience.
You could also look at solving big problems that are not possible on pen and paper. Things like calculating the first 5000 prime numbers are always impressive to people who are new to programming and have an interest in math.
But again, stay away from GUIs with C in an introductory. It is not worth it.
Edit: Or show them something else C is well suited for. Bring in some variety of hardware like an Arduino robot or something and show a simple wall avoidance program or interface with an LCD display or something. I think this would be the best path to take if you want to get them hooked on C programming.

Related

MUD Programming language

I have been playing a MUD game now off and on for over a year. I have scoured the internet looking for the best computer language to learn to develop my own. So far, I have come up with nothing but C. Is C the best language to learn for this application, or is there something better?
I know SMAUG was written in C, but that was years ago. I am new to programming in general and have some experience with Python. I have been playing Aardwolf, which allows it users (after a certain level) to create their own area's. The user does this using Lua. This was interesting to me, because Lua is a "scripting" language. So this begs another question - Do you build the game's format in C (or something else) but create the world with a script?
Also, this would be a game with only my friends, so a direct connection would be required since I would not be hosting it online. So, once again, I would like to dive into this world and use this as a pet project to also help me learn a programming language... but which one would be the best that would also allow me to scale it uo in the funture
P.S. - Any open source code out there that I can look at and study?
So, once again, I would like to dive into this world and use this as a pet project to also help me learn a programming language... but which one would be the best that would also allow me to scale it uo in the future
Most MUD codebases tend to be in C, but this is mainly for historical reasons. MUDs were fairly popular a while back, and at the time, C was by far the best language for portability which was supported by most hosting options out there.
That being said, a MUD is really fairly simple, in many ways. You could easily write a MUD in any language, provided it supports sockets and text parsing. Using a language with a good string parsing and high level socket support would actually be far simpler than some of the classic MUD code bases.
There are a ton of available MUD engines available online : a quick look at MudConnector will give you a ton info of available servers, software and code bases.
As for your programming language of choice, if you intend on only making it available to you and your friends, Python would be fine - I made one entirely in Lua a few years ago and it was a breeze. It's a great learning experience !
perhaps you should look for a MUDOS
http://www.mudos.org/

how much c programming should I know before indulging into sdl programming

I have programmed in c and I know about data structures and algorithms, but It has been a while since I programmed in c. I forgot things like how function pointers and some advanced stuff in c work. I want to try graphics programming using sdl. my question is how much of c should I know (for example should I know function pointers) before getting into this. Or in other words will I be stuck if I dont remember a lot?
I think basic knowledge of C should be enough. Look for some SDL tutorials and follow them closely, you will refresh your knowledge of C and at the same time learn how to use SDL. It might go a little slower at first, but you will get into it.
Try for example: SDL Tutorials
Or: GPWiki SDL tutorials
Or: Lazy foo
The first one offers also C tuts. As for functions pointers, you might need them later, when you get to the more advanced stuff. With the basics, you will see everything in tutorial source code and believe me it is easy to understand.
If you like books, try: Focus on SDL
Dont know if there are better ones.
I see PeterK posted lots of good stuff, but I figured I'd throw my two cents in as well. When I started using SDL (3-4 months ago), I had a little experience in Java and no experience in c/c++. Using LazyFoo's tutorials (http://lazyfoo.net/), I was able to get up to speed very easily. I would recommend it to anyone who wants to learn SDL.

visual c editor for kids

does anyone know of a visual programming tool that could be adapted for children (kids age 7-12) so that they can generate c programs to control device?
If controlling devices is your ultimate goal, how about LEGO Mindstorms? You can use all sorts of languages with it and they get to play with LEGO! They can start with the default language and once they understand the fundamentals they can start using some of the third-party languages, some of which are C/C-like
Another interesting language for kids is
scratch, from MIT. I don't know if it's possible to use it to control devices
I agree with Daniel about the LEGO's but another idea is to try Alice and a class mate of mine from college is trying to start a company with his brother and two sisters working on a project to teach children, or anyone for that matter, how to program. It's called Project Forge I don't know too much about it but I thought you could look into it.
If your looking for a good way to teach kids programming, take a look at LOGO.
http://www.softronix.com/logo.html
A bonus of learning LOGO, is that it has been used in a variety of robot toys. You don't need to buy these to teach your children to program, the free LOGO version suffices. Of course the robot toys are great fun as well. More information is available online, e.g. the LEGO (Mindstorm series) and Fisher Technic toys.
I am not sure if my answer is helpful, but you can use arduino IDE to program arduino boards. it is it is visual and running program is just a single click. interface is simple as hell and programming language (C based) is very simple to start with.
http://villamil.org/?p=106
although myself, I prefer emacs to program arduino (definitely overkill for kids)
It is not C/C++, but Microsoft has a free Small Basic IDE http://msdn.microsoft.com/en-us/beginner/ff384126.aspx aimed at kids. Also, the EXPRESS editions of Visual Studio are free and do support C in the IDE

2D game development basics

I would like to write some simple Mario-like game from scratch using language C. But honestly I have no idea how to do so, and I can´t find any good tutorial for this, which is for free.
But to the actuall question, I have only written WinAPI programs so far, so all event handling and user input was handled by OS, with minimum work, But to develope game, with for example menus with non-rectangular buttons, animations, and so, I guess, there is no such thing in WinAPI taht could help me with this more than just some basic routines mouse pointer location and keypresses.
So, is the right way to write your game to write entire draw part of game engine by manipulating objects for player, enemies, and even background yourself, and than just use directdraw for output to screen?
EDIT:
I actually want to learn how to write games from scratch, becouse it must be great programming experience, and if you consider games like Commander Keen on DOS, created with no framework or libraries, but still so great.
A good approach to this would be to have a look at the SDL library. I'm not saying it's necessarily the best library for 2D games, but it's easy to get started with and the web is flooded with tutorials and open source code samples for simple homebrew 2D games written using SDL.
I do recommand the SDL too, but you should definitely have a look on lazyfoo tutorial, which is just great.
When I started programming I started doing it with Allegro, back in the good old DOS days. It was the first usable library which worked with SVGA libraries, and had a good sprite support. Then version3 came and they added support for windows (using GDI and Directy X, you could choose at runtime which engine to use). The linux port came to life, and all is good.
It's a very basic 2D library, and it will teach you the very basics of graphics and animations. Now it even contains audio support which is a very needed addition (well, I still remember V 2.9X...). They are in betas for version 5, and I think this is an interesting project for you to look into.
http://www.talula.demon.co.uk/allegro/
What are you guys talking about, the WinAPI has low level drawing routines.
Although using an established library like SDL is probably a better idea you could create your own abstractions to the WinAPI drawing routines without too much difficulty.
Then it's just a matter of creating the while loop that has all the drawing instructions and interpreting input. For 2D games this isn't too difficult.
I also used SDL, but try to look at HGE. It requires at least DirectX 8.0 so your applications will work only on Windows but on their forum you will find many topics on how to port it to OpenGL. In my opinion HGE will be easier to learn than SDL, because SDL is a low level library and you will have to learn how to handle many things by yourself. HGE is more ready to start just out of the box.
In short, yes - there's nothing in the WinAPI that will help you much. However, there are dozens of game engines that you could build your game on that would take a huge amount of gruntwork out of creating the game itself. A bit of Googling will help you.
(Personal recommendation: although it's technically a 3D engine, something like Unity is an excellent engine that includes tutorials for creating 2D games. Unity isn't C, but it does make your life a lot easier...)
EDIT: I actually want to learn how to write games from scratch, becouse it must be great programming experience, and if you consider games like Commander Keen on DOS, created with no framework or libraries, but still so great.
This is actually not quite right. Commander Keen (and any DOS games) do use libraries: the ones provided by DOS, BIOS, etc. Without libraries of one form or another, you wouldn't be able to do anything useful with C. For game programming, you really do want to leave all the low level details to someone else.
I'd recommend Allegro as a beginning game programming library.
Check out this one Game dev starting
They have realy a big resource related to game programming and a lot of beginner stuff. SDL is good, but you should consider about learning basic game techniques before start coding and even before start thinking about the api/libs you use.
Clear out how much "intelligence" you need (Ki), consider about loading/Saving a an early time, ... so much things that you should keep in mind if you want to finish your project.
Do you need a game editor? (Also..work) What about sound/graphics? Writing all this stuff on your own will take a lot of time (if you do not have experience). Creating the content is another big issue which can consume a lot of time, if you make it at all.
Maybe it will help you to have a look on some dev kids, because that will give you the idea how their engine works. Like this one (outdated) Dev kid
I've just started a similar project a few days ago, you can check it out over at GitHub.
It should give you some ideas about how the game is structured. As well as some details on a scrolling 2D map with collision (which turns out to be quite complicated if you want to get it 100% bug free). Oh, and it's using SDL as many here have already suggested.
As for me, this is my first C project. But I'll have to admit that I've done similar stuff in Java and Python before, so this was a good way for me to quickly learn C. And since it's learning and not any productive stuff, I'm using plain C99, which makes the task even "funnier".
But back to the game, you really need to think about your design before you start coding, write it down on a sheet of paper, or if you're like me and you don't have tree stuff in reach write it in pseudocode.
Think about as many possible game states as you can, nothing's worse than having to re-implement the whole player/map/whatever stuff from scratch just because you did not think about feature XYZ before.
Design is very important, if you don't have a goal to begin with, your project will reach a point where it fails, just like my Tuff did, well it also failed due to missing music and somebody who would have designed enemies, etc.
Speaking of graphics and such, bear in mind that the game will consist of much more than just the plain code. If you aren't good in graphics then take that into account while designing. Because you will quickly lose your motivation when the only things on the screen are colored rectangles.
Action Arcade Adventure Set (originally published as a book) is probably one of the most complete tutorials on how to write a 2D side-scrolling game. Although an older reference, many fundamentals for developing a 2D side-scroller have not changed.
Full source code examples and some tools to develop a side-scroller are provided as downloads. There is only one external library used to handle graphics primitives. As this is an older DOS program, you may have to use a DOS emulator like DOSBox or modify the examples for more modern environments.
I suggest you skim chapters 1 to 9 and focus on chapters 10 to 17.

Fundamentals of Game Programming in C

During the last 2 months I've been trying to learn the basics of game programming. So I coded a few simple games in Java to learn the fundamentals, such as Tetris, Checkers and Pac-Man.
Now I want to learn/improve my skills in C, so I have this idea of writing those games in C to learn more about memory management, no OOP, etc. I have done basic C programming before but never with graphics, so I don't know where to start.
Which libraries should I use to write simple 2D games in C? GTK+? Cairo libraries? Any tutorials you can recommend? Graphics libraries?
Thanks
I would recommend using the SDL graphics libraries, there are some pretty good tutorials and demonstrations here... http://www.libsdl.org/ and for tutorials here... http://www.sdltutorials.com/ Hope it goes well!
Doing some openGL with glut is a good place to start in my opinion, as it allows you to do both 2d and 3d graphics.
http://www.opengl.org/resources/libraries/glut/glut_downloads.php
If you want another layer to help you with various parts of game programming (keyboard and mouse events, sound, etc..) you can use SDL with openGL.
http://osdl.sourceforge.net/main/documentation/rendering/SDL-openGL.html
There are lots of tutorials around the web to help get you started.
If you want to do C game development, OpenGL with glut is a good start..
The red book is your friend!!
Although the following are not 2d; as everyone is mentioning 3d i might add the following libraries; they are open source libraries for 3d engines.
Ogre is a pretty popular open source graphics engine. "Torchlight" was written in it, and so was "A tale in the Desert". Also the unreal engine has gone open source.
A 2D library that just crossed my mind and is amazing to use is Quartz from OSX. The tools are pretty damn good as well. You'll have to learn some Obj-C though, but its a nice language.
As someone mentioned you need some key Math skills to move up in the game programming world. I don't know how much is involved in animation and modelling since tools are available, but to write engines of any sort Linear Algebra is involved; this applies to 3D programming and it might be involved in 2D Opengl. Gilbert Strang's introductory book on Linear Algebra is amazing. Mit opencourseware also has an entire semesters worth of lectures available by Gilbert Strang on Linear Algebra. You can download them directly from Itunes or on the web.

Resources