Aide Snake java

mohaskh - 10 avril 2013 à 20:06
 mohaskh - 20 avril 2013 à 19:50
Bonsoir tout le monde,

Je suis en L1 informatique et j'ai un projet à réaliser, il consiste à réaliser un jeux snake en java avec une classe d'affichage fournie.

Sauf que je n'ai jamais créer de jeu dans ma vie. De plus la programmation, c'est pas trop mon point fort et donc je suis un peu bloqué. J'ai juste réussi à ouvrir l'interface, ensuite je ne sais pas par où commencer, les étapes à suivre pour réaliser ce jeu... J'essaie de créer le serpent mais je n'arrive pas. Donc, si quelqu'un peut m'éclaircir un peu, ça serait gentil. Le sujet est ici http://www.u-picardie.fr/~furst/docs/projet_snake.pdf

Merci ;)

13 réponses

Voici la classe d'affichage

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class InterfaceSnake extends JFrame{

private Color[][] g;
private Graphic p;
private int bordure 5,cell 10;
private KeyEvent ke;

private class KEDispatcher implements KeyEventDispatcher {
public boolean dispatchKeyEvent(KeyEvent e) {
if (e.getID() == KeyEvent.KEY_PRESSED) {
if(e.getKeyCode() KeyEvent.VK_RIGHT || e.getKeyCode() KeyEvent.VK_LEFT || e.getKeyCode() == KeyEvent.VK_DOWN || e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_PAUSE) ke = e;
}
return false;
}
}

public InterfaceSnake(Color[][] grille){
super("Snake");
this.g = grille;
this.p = new Graphic();
this.p.setPreferredSize(new Dimension(2*this.bordure+(this.g.length-1)*this.cell, 2*this.bordure+(this.g[0].length-1)*this.cell));
this.getContentPane().add(this.p);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
this.setResizable(false);
this.setVisible(true);
KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
manager.addKeyEventDispatcher(new KEDispatcher());
}

public void changeGrille(Color[][] grille){
this.g = grille;
this.refresh();
}

public int pressedKey(){
if(this.ke == null) return 0;
else{
int result = 0;
if(this.ke.getKeyCode() KeyEvent.VK_RIGHT) result 2;
if(this.ke.getKeyCode() KeyEvent.VK_LEFT) result 1;
if(this.ke.getKeyCode() KeyEvent.VK_DOWN) result 3;
if(this.ke.getKeyCode() KeyEvent.VK_UP) result 4;
if(this.ke.getKeyCode() KeyEvent.VK_PAUSE) result 5;
this.ke = null;
return result;
}
}

public void refresh(){
this.p.repaint();
}

private class Graphic extends JPanel{

public void paint(Graphics gr){
gr.setColor(Color.WHITE);
gr.fillRect(0,0,this.getWidth(),this.getHeight());
for(int i=0;i<g.length;i++){
for(int j=0;j<g[i].length;j++){
gr.setColor(g[i][j]);
gr.fillRect(bordure+cell*i,bordure+cell*j,cell,cell);
}
}
}

}

/** Affiche le message m dans une boite de dialogue. */
public void afficheMessage(String m){
JOptionPane.showMessageDialog(this,m);
}
}
0
Et voici ce que j'ai fait pour le moment

import java.util.Scanner;
import java.awt.Color;
import java.awt.Point;

public class serpent
{


static class snake // Enregistrement snake
{
Point tete;
Point [] Corps;
int direction;
Color s;
}


public static void Couleur(Color[][] g) // Couleur de la matrice vert
{
int i, j;
for(i=0;i<=g.length-1;i=i+1)
{
for(j=0;j<=g.length-1;j=j+1)
{
g[i][j]= new Color(0,255,0);
}
}
}




public static void main(String[ ] args) // Fonction principale
{
Color[][] grille= new Color[90][90];
Couleur(grille);
InterfaceSnake is = new InterfaceSnake(grille);
}

}
0
BunoCS Messages postés 15476 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 3 mai 2024 103
11 avril 2013 à 11:11
Hello,
Je suis en L1 informatique [...] Sauf que je n'ai jamais créer de jeu dans ma vie.

Euh...il me semble que tu fais ces études pour apprendre justement.
Le règlement (point 9) stipule que nous ne faisons pas le travail à la place des autres. Merci donc de revenir avec une question technique concrête.

Bon courage.

@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
11 avril 2013 à 11:43
Salut,

Je suis fortement désappointé de voir que dans ton université on te dit :

Remarque importante : des programmes de Snake écrits en Java peuvent
surement être trouvés sur le Web, mais ils seront écrits en Java objet. Aucun
projet écrit dans le paradigme objet ne sera pris en compte lors des soutenances.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
11 avril 2013 à 12:49
Il a fait le même genre de demande sur d'autres sites dont celui-ci et celui-ci.
















T.U.E.R (First Person Shooter créé par Julien Gouesse)
0
Utilisateur anonyme
11 avril 2013 à 12:54
@mohaskh J'ai un conseil à vous donner. Si vous êtes mauvais en programmation, je vous conseille vivement de vous réorienter, vous n'avez rien à faire en licence générale d'informatique. Ce n'est pas en trichant qu'on réussit quel que soit le diplôme.






















T.U.E.R (First Person Shooter créé par Julien Gouesse)
0
Merci de votre réponse.
@Buno En fait mon prof a dit qu'il fallait faire un tableau de point pour faire le serpent, et je voulais savoir les points représente quoi? Pourquoi ne pas faire un tableau simple?

@gouesse
Ce n'est pas en trichant qu'on réussit quel que soit le diplôme.

J'ai jamais dit qu'il fallait que vous le fassiez à ma place ou quoi que ce soit, je demande juste de l'aide pour démarrer.
0
Utilisateur anonyme
12 avril 2013 à 00:18
Vous balancez le sujet de votre devoir et le peu de code que vous avez, vous ne nous dites pas précisément ce qui vous pose problème. Essayez de le faire seul et si jamais vous butez sur des points bien précis, revenez ici, posez-nous des questions et nous vous répondrons dans la mesure du possible mais je maintiens ce que j'ai dit. Si vous avez un niveau faible en programmation et que vous sentez que ça ne sera pas votre point fort, vous devrez tôt ou tard vous réorienter. Si vous ne vous confrontez pas à la difficulté, vous ne progresserez jamais. On vous a demandé de ne pas suivre le paradigme objet et vous commencez par créer une classe "snake", vous êtes déjà à côté de la plaque.












T.U.E.R (First Person Shooter créé par Julien Gouesse)
0
Utilisateur anonyme
12 avril 2013 à 14:28
. Si vous avez un niveau faible en programmation et que vous sentez que ça ne sera pas votre point fort, vous devrez tôt ou tard vous réorienter

Pas tout à fait d'accord avec gouessej. Il faut savoir qu'il n'est qu'en 1ère année d'Info, qui plus est à la Fac. Et généralement les Facs ne sont pas connues par la proximité des enseignants et pour l'aide à l'apprentissage. Donc le sentiment qu'il ressent peut être normal au début, ne jettons pas la pierre trop vite.


Salut,

Je suis fortement désappointé de voir que dans ton université on te dit :

Remarque importante : des programmes de Snake écrits en Java peuvent
surement être trouvés sur le Web, mais ils seront écrits en Java objet. Aucun
projet écrit dans le paradigme objet ne sera pris en compte lors des soutenances.


Je suis moi aussi complètement sidéré de voir ça. Java sans POO ce n'est plus Java. Et ce genre de raisonnement te forme plutôt des pisseurs de code qui ne maîtrisent pas la puissance du langage objet, car apprendre un langage en se contentant de sa syntaxe est complètement inutile (pour rester correct).

Vous balancez le sujet de votre devoir et le peu de code que vous avez, vous ne nous dites pas précisément ce qui vous pose problème

En même temps s'il n'a pas beaucoup de code il ne risque pas d'en afficher beaucoup... Et il a dit qu'il avait rencontré un problème avec la modélisation de son serpent.

La prochaine fois mohaskh,utilise les balises qui te permettent d’afficher clairement et de manière colorée le code. Ça nous aidera à mieux voir tout ça :D

@Buno En fait mon prof a dit qu'il fallait faire un tableau de point pour faire le serpent, et je voulais savoir les points représente quoi? Pourquoi ne pas faire un tableau simple?

En fait je pense que ce que veux dire ton prof c'est que, comme un serpent est représenté graphiquement (traditionnellement) par une suite de points, il faut que tu modélises ce serpent par une tableau qui contient les points du serpent. Par exemple, tu peux faire un tableau en deux dimensions et l'utiliser comme ça :

// Pour gérer le contenu de ta grille de jeu (une solution parmi tant d'autres)
// et c'est la moins programmation orientée objet
static final int CASE_VIDE = 0;
static final int SERPENT = 1;
static final int POMME = 2;

// Ton plateau de jeux vide au début
static final int TAILLE_TABLEAU = 12;
int[][] plateau = new int [TAILLE_TABLEAU][TAILLE_TABLEAU];
for ( int i = 0; i < TAILLE_TABLEAU; i++ ){
     for ( int j = 0; j < TAILLE_TABLEAU; j++ ){
          plateau[i][j] = CASE_VIDE;
     }
}

// Tu peux dire que en bas à droite de ton tableau se trouve une pomme qui donne des points
plateau[TAILLE_TABLEAU-1][TAILLE_TABLEAU-1] = POMME;

// Et tu mets ton serpent de taille trois
plateau[0][1] = plateau[0][2] = plateau [0][3] = SERPENT;


--
Pylouq
Heureux sont ceux qui lisent le Réglement, ils ne finiront peut-être pas au bûcher.
0
Utilisateur anonyme
12 avril 2013 à 15:14
J'ai une licence générale d'informatique en poche (avec mention) et je connais très bien les universités françaises. Il y a peu d'encadrement mais s'il se sent encore faible en informatique au bout de 7 à 8 mois de cours et que ce n'est pas sa tasse de thé, il devra se réorienter.

Son professeur a tourné le sujet ainsi surtout pour vainement éviter que ses étudiants pompent un code source existant.

J'en reste là car j'estime qu'il ne s'est pas réellement confronté au sujet. Je verrai s'il revient pour poser des questions précises. Rien que le peu qu'il a pondu montre qu'il n'a même pas compris qu'on ne lui demande pas de faire de l'objet.

















T.U.E.R (First Person Shooter créé par Julien Gouesse)
0
Merci de votre réponse.
J'ai posé la question à mon prof concernant le Java Objet, il m'a dit qu'on pouvait l'utiliser mais qu'il fallait le comprendre et savoir expliquer lors de la présentation orale.

@Pylouc enfin une personne qui me comprend, merci a toi.
Oui c'est ce que j'ai fait aujourd'hui, mon prof m'a vraiment bien aidé aujourd'hui vu les nombreuses questions que je lui posées J'ai donc réussis à afficher le serpent, les bordures ainsi que le fruit. Maintenant il faut que je fasse bouger ce serpent. D'après ce que le prof m'a dit, il faut que les coordonnées des points de la tête passent à la case suivante, et les coordonnées de point de la première case se déplacent à la dernière case, ceux de la dernière case se déplacent à l'avant dernière case et ainsi de suite.

@gouessej Juste pour te dire que je ne suis pas le seul à être mauvais en programmation dans mon université, la moyenne générale du premier contrôle du semestre 2 a été de 6 Je pense surtout que le niveau s'est élevé d'un seul coup.
Et puis pourquoi me ré-orienté? il n'y a pas que "programmeur" comme débouchés ...
0
Utilisateur anonyme
17 avril 2013 à 20:49

@gouessej Juste pour te dire que je ne suis pas le seul à être mauvais en programmation dans mon université, la moyenne générale du premier contrôle du semestre 2 a été de 6 Je pense surtout que le niveau s'est élevé d'un seul coup.
Et puis pourquoi me ré-orienté? il n'y a pas que "programmeur" comme débouchés ...


Après les moyennes lors des exams à la Fac ne sont pas vraiment à prendre en compte, car vu le nombre d'étudiants, si plus facile de faire descendre une moyenne que de la monter. Ensuite, à ce que j'ai compris tu es en première année de Licence, autant dire que sur les 3 ans, celle-ci et la 2ème année ne te seront pas vraiment des plus utiles par la suite. Ça te donne les bases mais bon, c'est surtout la 3ème année qui est utile.

Pour ce qui est du déplacement, c'est ça. C'est relativement simple à faire, et ça te fera assimiler la gestion des tableaux. Là seule petite difficulté sera lorsque ton serpent atteindra la bordure de ton plateau de jeu, là à toi de voir comment tu t'y prendras (faire passer le serpent de l'autre côté ou mettre fin au jeu car le serpent a touché une bordure).

--
Pylouq
Heureux sont ceux qui lisent le Réglement, ils ne finiront peut-être pas au bûcher.
0
Merci de ta réponse.

@Pylouq Oui c'est ce qu'on nous a dit aussi concernant les deux premières années qui nous donne que les bases.

Par contre pour les déplacements, d'après ce que j'ai compris, une fonction pressedKey est deja faite dans la classe d'affichage, mais comment faire pour l'utiliser dans un autre fichier java (fichier où le serpent a été créer) ?


Merci
0
Rejoignez-nous