Uau, para um primeiro programa exigiram bastante hein?!
Sobre livros, existem um bocado de ebooks gratuitos e alguns livros interessantes para iniciantes. Procure por Use a Cabeça! Java, os livros do Deitel, Java Como Programar.
Se não precisa de banco de dados (opcional) e nem tela via Swing, o jeito mais simples no meu ponto de vista seria esse:
- Crie um objeto para as respostas que tenha três campos: uma String com a letra da resposta, uma String para a resposta e um boolean para indicar se a resposta é certa ou não.
- Crie um objeto para as questões com uma variável String que contenha o enunciado e uma lista de objetos de resposta (5 objetos) onde cada um tenha uma resposta e apenas um deles deve ter a variável boolean marcada como true (resposta certa)
- Criem n objetos para isso e depois usem um algoritmo que escolha randomicamente uma lista de 10 questões (vocês podem colocar 30 questões e garantir que seu software traga sempre perguntas diferentes a cada rodada)
Feito isso, inicie o programa, pergunte o nome do Jogador, faça o sorteio das perguntas e comece exibindo elas na tela dentro de um laço for. Valide a resposta do jogador (ele PRECISA digitar a, A, b, B, c, C, d, D, e, E). Qualquer coisa diferente disso exiba um alerta através de JOptionPane (showmessagedialog). Se o jogador digitar uma das letras válidas, compare com a sua lista de resposta a qual delas essa letra corresponde e se o seu atributo boolean é true ou false. Se for false, não mexa na variável global. Se for true, incremente ela para sinalizar o acerto.
Ao final do quis, exiba a pontuação. Ainda pode dar uma incrementada mostrando as questões que ele errou (armazene elas numa lista secundária) e exiba a resposta correta da pergunta que ele errou.
Acho que isso pode te dar um norte legal. Não é a solução ideal mas acho que fica bem tranquilo para quem está iniciando.