If the game is retardedly simple, and you can play it optimally, sure, you can tell it "given gamestate a, make move 3" in your training examples. This is the trivial case where the NN just memorizes your input/output mappings. Depending on your teacher, he may not accept this. If you have enough of them, you might be able to give it a state it's never seen, but it's hard to say if it will be able to generalize. Usually you need a lot of training data for that, and it sounds to me like you would have to generate it on your own.
If you can't play it optimally yourself (and hence can't provide good training data) or you actually want it to LEARN how to play ludo (and not tell it how to play ludo), you need to come up a way to provide feedback. You need to be able to say "this is your goal", and let it figure out how to get there on its own. The goal of learning, at its heart, is to get the program to do something you did not explictly write. If you just give it all the answers, you really just have a sounding board. So for tic-tac-toe you need to abstract a "move". What defines a bad move and what defines a good move? Obviously a move that ends with a loss is a bad move, and a move that wins the game is a good move. Unfortunately, there is much more to it than that. What defines a move that leads to a good move? What defines a move that is good now but loses you the game next move? These are not simple questions, and I'll stop rambling on and confusing you. Basically, this is where you have to get creative.