Topic de JamereBurvelle :

[PROJET] Apprenons à programmer en JAVA !

Mon objectif c'est de faire un jeu pour android et iphones, c'est possible avec le java ?

Le 25 novembre 2017 à 12:41:30 DRoseKnicks a écrit :
Mon objectif c'est de faire un jeu pour android et iphones, c'est possible avec le java ?

Le Java te permettra de faire du dév android (d'ailleurs vaut mieux utiliser kotlin).
Sinon regarde les frameworks hybrides permettant de faire du natif, comme react native

Le 25 novembre 2017 à 12:09:21 JamereBurvelle a écrit :
Par contre un truc qui est pas tout à fait clair pour moi c'est les différences entre "public", "private", "static"... Je comprends pas exactement tous ces mots clefs :(

public et private permette de gérer l'accès à ta classe.

Si tu met une variable de classe en public, tout le monde peut y accéder en faisant MonObjet.monChamps.

Ça peut vite devenir problématique, je m'explique:

Si on prend l'exemple de la classe Vehicule :

public class Vehicule{

public int nombre_roues;

}

On peut accéder à nombre_roues et mettre n'importe quel nombre (un nombre négatif par exemple), ce qui aura pour cause de faire bugger la classe dans la plupart des cas.

Il est donc plus intéressant de le faire de cette manière:

public class Vehicule{

    private int nombre_roues;

    public bool setNombre_roues(int nombre_roues){
         if(nombre_roues<0)
             return False;
         this.nombre_roues=nombre_roues;
         return True;
    }

    public int getNombre_roues(){
        return nombre_roues;
    }

}

Ce qui permet de contrôler ce que la personne modifie dans la classe :ok:

Pour static, c'est une fonction ou un champs qui peut être utiliser sans avoir à créer un objet.

Si je fais le code suivant:

class Compteur{
    private static int nombre=0;

    public Compteur(){
         Compteur.nombre++;
    }

    public static int getNombreInstance(){
        return nombre;
    }
}

Je peux alors accéder au nombre d'instance en faisant simplement Compteur.getNombreInstance();

De la même manière, à chaque fois que j'instancie un nouvel objet Compteur, nombre s'incrémente de 1, ce qui me permet de connaître le nombre d'objets que j'ai en mémoire :ok:

Ok merci pour les explications, c'est plus clair !

Le 25 novembre 2017 à 09:14:49 JamereBurvelle a écrit :

Le 24 novembre 2017 à 23:27:39 inkhey a écrit :
Tiens je vous propose un défi d'algorithmique. Comment vous représenter et gérer un serpent pour un jeu de type snake ? Je vous le propose parce que c'est un truc qui m'avais bien turlupiné quand j'était en DUT info et c'est via ce serpent que j'ai débuté python (alors que je faisait plutôt du java à la base).

Il faut considérer que le serpent de déplace dans un espace d'un certain nombre de cases et qu'il peut grandir.

À vos cerveau, partez [[sticker:p/1kkn]]

Pour l'agrandissement, il me semble que dans le jeu tu ajoutes une case au serpent à partir du moment ou tu as "digéré" la nourriture, donc quand elle arrive à la queue :oui:

Ah c'est pas bête ça. j'avais pas poussé le bouchon jusque là moi.

Sinon pour la représentation je vois pas ce que tu veux dire :( J'imagine que ce serait un tableau avec une taille modulable ? Mais je sais pas tout à fait comment faire ça encore :rire:

Vu que tu parle d'un tableau modulable, tu part bien sur une idée de tableau virtuel, ce qui me semble la solution la plus raisonnable dans ce cas d'usage mais c'est pas le cas quand tu fait des jeux avec des personnage à une case. Dans ce cas d'usage tu peut faire du tableau "réel".

Pour clarifié les choses, en gros , le principe du tableau réel :
on à O espace vide, X joueur , M mur , on à ainsi un tableau à double entrée de la forme :
# voilà le tableau si on l'affiche proprement: OOOOOOOO OMOOOMMM OOOXOOOO MMOOOOMO

Bien évidemment si c'est sympa pour gérer certaine chose, pour gérer un serpent c'est la grosse galère.
Ainsi la solution consiste à utiliser un tableau dit virtuel, qui contient les positions des cases du serpent :
# Voilà une façon de présenter ce tableau : [[1,0],[1,1],[2,1]]

Je te laisse réfléchir encore un peu sur la façon d'avoir ce fameux tableau virtuel qui gère le serpent, il existe une structure de donnée en algorithmie qui est quasiment optimale pour faire ça (bon si tu ajoute l'histoire de la digestion c'est un poil plus complexe).

Le 25 novembre 2017 à 12:22:44 JamereBurvelle a écrit :
Pourquoi on met pas tout en public alors ? On se ferait moins chier :(

C'est aussi surtout une façon détournée de donnée une information, une méthode privée est une méthode qui n'est pas censé être utiliser en dehors de la dite classe.

Un bon exemple c'est en python, en python il n'existe aucune vérification de ce type. Pourtant, tu verra souvent des méthodes du type :

def _ma_methode(self):
    pass

avec le _ au début du nom. La convention veut que c'est une méthode privée.

De même en python, tu peut notifier les type d'entrée et de sortie alors qu'il ne sont pas vérifiées, c'est là aussi façon de documenter son code pour mieux l'expliquer.

"Java" j'me suis arrêté là https://image.noelshack.com/fichiers/2017/14/1491484186-risitasueur.png

Le 25 novembre 2017 à 14:51:25 JamereBurvelle a écrit :
Ok merci pour les explications, c'est plus clair !

Pour rajouter une couche, c'est aussi pas mal une question de paradigme.

-Java considère que les objet sont des boîtes noires et que l'on ne doit pas faire confiance aux autres développeurs.
- Python à l'inverse considère qu'entre adulte consentant, il n'y à pas de problèmes.

À noter qu'il existe un mot-clé qu'on retrouve à la fois dans Java et Python qui propose une logique entre-deux, c'est assert et la programmation par contrat.

Si tu met .


a = 2
assert a == 1 

et que les assertion sont activés, une exception sera levé car a n'est pas égal à 1. Si les assertion sont désactivé, aucune assertion sera levé. Il s'agit là d'un mécanisme pour dire "je sais que ma fonction n'est pas faite pour supporter d'autre valeur de a, tout les développeurs qui entre autre chose le font à leur péril". Bref, c'est un contrat, on se met d'accord sur ce qui est censé être entrée, mais sans gérer explicitement tout cela.

j'ai commencé une année en info là, niveau java jsuis perdu depuis quelques semaines https://image.noelshack.com/fichiers/2017/16/1492524101-jesus60.png
Ca a l'air vraiment compliqué à gérer la programmation en groupe quand même :peur:

Le 22 novembre 2017 à 23:10:43 Blaff10 a écrit :
Sinon plus sérieusement l'idée du topic est cool et bien présenté, beau boulot. :ok:

Mais JAVA... https://image.noelshack.com/fichiers/2017/10/1489162412-1465686632-jesuus-risitas.gif

JAVA QUOI BORDEL JAVA ! :rire:

Le 25 novembre 2017 à 12:40:51 B30JPADLV a écrit :
POO=caca

Vive le procédural [[sticker:p/1kki]]

:(

LISP FUCK THE WORLD ! LISP RULES ! :-((

Le 25 novembre 2017 à 15:59:31 JamereBurvelle a écrit :
Ca a l'air vraiment compliqué à gérer la programmation en groupe quand même :peur:

Un peu mais pas tant que ça. Maintenant qu'on à de bon outils, ça devient relativement aisé, mais ça prend un peu de temps.
Franchement hésite pas à étudier un peu git un de ses 4 , c'est très pratique, même pour gérer des listes de tâches perso.

Le 25 novembre 2017 à 16:04:19 [Clavis] a écrit :

Le 25 novembre 2017 à 12:40:51 B30JPADLV a écrit :
POO=caca

Vive le procédural [[sticker:p/1kki]]

:(

LISP FUCK THE WORLD ! LISP RULES ! :-((

(((((LISP FUCK THE WORLD !) (LISP RULES ! ":-(( "))))) [[sticker:p/1lm9]]

J'ai un soucis https://image.noelshack.com/fichiers/2016/36/1473263957-risitas33.png

J'essaie de faire le dernier exo de la semaine 4 de mon cours (un pendu), mais j'ai une ereur que je pige pas :(

le code : https://pastebin.com/FHy5PmGG

C'est dans la fonction hiddenWord, je dois créer le mot tel qu'il apparaîtra à l'utilisateur ("_" si la lettre est pas trouvée, sinon on l'affiche)

Mais j'ai l'erreur "Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:658)
at HangmanLogic.hiddenWord(HangmanLogic.java:47)" qui apparaît :-(

Apparemment ça voudrait dire que j'essaie d'accéder à l'index 0 et qu'il n'existe pas, sauf que j'initialise hiddenWord en copiant le mot en question dedans dès le début https://image.noelshack.com/fichiers/2017/21/1495823687-risitas197.png

J'suis perdu du coup, on pourrait m'aider ? :-(

(le code c'est vraiment le bordel, à force de tout modifier y a plus rien de clair :rire: )

Le 22 novembre 2017 à 23:09:35 Blaff10 a écrit :
Vouloir apprendre le JAVA en 2017... https://image.noelshack.com/fichiers/2017/10/1489162412-1465686632-jesuus-risitas.gif
Bien de finir pisseur de code en SSII pour 2k brut / mois ? https://image.noelshack.com/fichiers/2017/10/1489162412-1465686632-jesuus-risitas.gif
Bien le garbage collector plus lent que le programme lui-même ? https://image.noelshack.com/fichiers/2017/10/1489162412-1465686632-jesuus-risitas.gif
Bien ton fichier qui contient plus de lignes pour importer des libs que de code ? https://image.noelshack.com/fichiers/2017/10/1489162412-1465686632-jesuus-risitas.gif

Ayaaa

+1000 et ça vient d'un dev android

Le 26 novembre 2017 à 19:31:19 JamereBurvelle a écrit :
J'ai un soucis https://image.noelshack.com/fichiers/2016/36/1473263957-risitas33.png

J'essaie de faire le dernier exo de la semaine 4 de mon cours (un pendu), mais j'ai une ereur que je pige pas :(

le code : https://pastebin.com/FHy5PmGG

C'est dans la fonction hiddenWord, je dois créer le mot tel qu'il apparaîtra à l'utilisateur ("_" si la lettre est pas trouvée, sinon on l'affiche)

Mais j'ai l'erreur "Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:658)
at HangmanLogic.hiddenWord(HangmanLogic.java:47)" qui apparaît :-(

Apparemment ça voudrait dire que j'essaie d'accéder à l'index 0 et qu'il n'existe pas, sauf que j'initialise hiddenWord en copiant le mot en question dedans dès le début https://image.noelshack.com/fichiers/2017/21/1495823687-risitas197.png

J'suis perdu du coup, on pourrait m'aider ? :-(

(le code c'est vraiment le bordel, à force de tout modifier y a plus rien de clair :rire: )

Comment tu executes ta classe déjà, j'essaye de débugger ton truc

Non en fait c'est tout con, la 1ère fois que tu lances ton programme ton "currentChar" est vide du coup c'est impossible de connaitre le caractère à 0

Le 26 novembre 2017 à 19:57:59 RepasDuCRIF a écrit :
Non en fait c'est tout con, la 1ère fois que tu lances ton programme ton "currentChar" est vide du coup c'est impossible de connaitre le caractère à 0

Bah il me dit bien que l'erreur vient de hiddenWord :( Je vais essayer de modifier quand même

Données du topic

Auteur
JamereBurvelle
Date de création
22 novembre 2017 à 23:04:59
Nb. messages archivés
412
Nb. messages JVC
410
Voir le topic sur JVC

Afficher uniquement les messages de l'auteur du topic

En ligne sur JvArchive

JvArchive compagnon

Découvrez JvArchive compagnon , l'userscript combattant la censure abusive sur le 18-25 !