Wake up Neo…

matrix_header
Lire la suite

Publicités

Le community manager

Les Inconnus

C’est en flânant sur facebook (oui je sais pléonasme…) que je suis tombé sur la page officielle des Iconnus, le trio Bourdon, Campan et Légitimus. Oui ces trois là qui ont fait rire les français et qui continuent de les faire rire. Ils venaient d’ouvrir ce compte facebook afin de promouvoir leur film.   En effet, ils font leur comeback le 12 Février 2014 dans vos salles de cinéma !

[Début de publicité]

Les Trois Frères, le retour : la bande annonce

[Fin de publicité]

Puis, j’ai découvert que ce ne sont pas vraiment nos trois compères qui gèrent la page même s’ils gardent un œil dessus. Enfin je m’en doutais, mais j’ai découvert que c’était une personne en particulier qui gérait la page…

gif-who-bcq1

C’est le ou plutôt la dans notre situation community manager ! (C’est Andréa Forté qui s’occupe de la page des Inconnus).

tumblr_mp5t47Ixjd1rknrf9o1_500

Eh oui, c’est elle qui est chargée d’apporter une nouvelle jeunesse au trio sur le web ! Afin de redorer le blason de nos vieux comiques qu’on avait perdu de vue., nous avons à la carte : des sketchs les plus connus en streaming gratuitement sur myskreen, des photos ‘exclusives’ du tournage, des vidéos…Bref tout un foin.

Ouais, mais c’est nécessaire ?

130314062614378068

Je veux dire : Nous avons des gens qui viennent des écoles de commerce qui font du marketing, de la pub, blabla…Alors que fait le Community Manager  ?

FmPYE

Pour répondre à cette question…

130325051956834475

C’est pourquoi je vous invite à lire cette article : Community manager ? Rédacteur web ? C’est quoi ? Ça se mange ? Nan en fait ne lisez pas cet article…Lisez tout le blog ! 😀 Très concis ce blog vous apportera de nombreuses réponses 🙂

Pouh ! Je suis torchon chiffon carpette moi, je vais vous laisser. Sur ce je vous souhaite une excellent année 2014 à tous ! 🙂

giphy

Clavier virtuel en HTML, Javascript et CSS – Première version keyboard.js

J’ai développé une première version du clavier qui est généré en JavaScript. Voir ici : http://bit.ly/1dgeTTX

Dans ce petit projet personnel, mon but était de générer un clavier avec du javascript et aucune balise HTML. Les balises HTML sont créées à l’aide de javascript.

Par exemple, pour créer une balise HTML button, typiquement nous pouvons utiliser cette technique :


document.write("<button>BOUTON TEST</button>");

Après quoi il suffit de rajouter quelques fonctions pour générer la valeur de ces boutons et les actions associées. J’utilise notamment le code ASCII pour afficher mes caractères. La prochaine étape est d’ajouter les touches manquantes (caractères spéciaux, etc) ainsi que le passage des lettres en minuscule aux lettres en majuscule et vice-versa.

En passant

Les brèves de nerdycode

nc

Ninn, le retour

Bientôt le retour de notre éditeur Ninn. Le premier objectif sera d’améliorer le code distribué sur le blog qui me semble un peu horrible avec un peu de recul.

D’autres projets

Une petite application android, un éditeur JS, et un petit jeu en HTML5 ! :mrgreen:

Articles

Bientôt écriture du prochain article de la série « Création de jeu en Java. » 😉

Une calculatrice en Java, ça vous va ?


Souvenez vous de ceci « Une calculatrice en Java, ça vous va ? » ? J’avais revisité un code que j’avais écrit quand j’étais un gros débutant. Aujourd’hui, je vous propose un code beaucoup plus balèze et plus sophistiqué que les codes précédents 🙂 En effet, vous pourrez ici faire des calculs (simples hein ? n’espérez pas calculer le khi deux avec )! Enjoy les amis.
P.S : Code vérifié avec des tests unitaires (je reviendrais là-dessus plus tard)


 

import java.util.Scanner;

public class Calculator {
	public static String execute(String s) {
		if(s.equals("")) return "Erreur !";
		if(!s.contains("+")&& !s.contains("-") && !s.contains("*") && !s.contains("/")) return s;
		s = supprEspaces(s);
		String resultat = new String();
		int resultatInt=0;
		char operateur = getOperateur(s);
		String operande1, operande2;
		int indiceOp=0;
		while(s.charAt(indiceOp) != operateur) indiceOp++;
		operande1 = s.substring(0, indiceOp);
		operande2 = s.substring(indiceOp+1, s.length());
		if(operateur == '+') resultatInt = Integer.parseInt(operande1) + Integer.parseInt(operande2);
		if(operateur == '-') resultatInt = Integer.parseInt(operande1) - Integer.parseInt(operande2);
		if(operateur == '*') resultatInt = Integer.parseInt(operande1) * Integer.parseInt(operande2);
		if(operateur == '/') resultatInt = Integer.parseInt(operande1) / Integer.parseInt(operande2);
		resultat = String.valueOf(resultatInt);
		return resultat;
	}
	
	public static String supprEspaces(String s) {
		String S = new String();
		for(int i=0; i<s.length(); i++) {
			if(s.charAt(i) != ' ') S += s.charAt(i);
		}
		return S;
	}
	
	public static char getOperateur(String s) {
		for(int i=0; i<s.length(); i++) {
			if(s.charAt(i) == '/') return '/';
			if(s.charAt(i) == '*') return '*';
			if(s.charAt(i) == '+') return '+';
			if(s.charAt(i) == '-') return '-';
		}
		return 'e';
	}
	
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String reponse = new String();
		do {
			System.out.print("Entrez votre calcul: ");
			String calcul = scan.nextLine();
			System.out.println(calcul + " = " + execute(calcul));
			System.out.print("Voulez-vous effectuer un nouveau calcul? (o/n) ");
			reponse = scan.nextLine();
		} while(!reponse.equals("n"));
	}

}

Bubble short or playing with bubbles in your bath

Exemple de tri à bulle simple :

TriABulle.java

public class TriABulle{
  static int [] tab = new int [5];
  public static void RandomInit(){
    for(int i=0;i<tab.length;i++){
       tab[i]=(int)(Math.random()*10);
    }
  }
  public static void affiche(){
    for(int i=0;i<tab.length;i++){
       System.out.print(tab[i]+"\t");
    }
    System.out.println("");
  }
  public static void tri(){
    boolean estRange=true;
    int n=tab.length-1;
    for(int i=0;i<n;i++){
       if(tab[i]>tab[i+1]){
       int temp=tab[i+1];
       tab[i+1]=tab[i];
       tab[i]=temp;
       estRange=false;
    }
       if(!estRange) tri();
    }
  }

  public static void main(String[] args) {
    System.out.println("TRI A BULLE");
    System.out.println("-----------");
    System.out.println("Init");
    RandomInit();
    affiche();
    System.out.println("Tri");
    tri();
    affiche();
  }
}

Exemple de tri à bulle bidirectionnel :

TriABulle2.java

public class TriABulle2{
  static int [] tab = new int [5];
  public static void RandomInit(){
    for(int i=0;i<tab.length;i++){
      tab[i]=(int)(Math.random()*10);
    }
  }
  public static void affiche(){
  for(int i=0;i<tab.length;i++){
     System.out.print(tab[i]+"\t");
  }
  System.out.println("");
  }
  public static void droit(){
    boolean estRange=true;
    int n=tab.length-1;
    for(int i=0;i<n;i++){
      if(tab[i]>tab[i+1]){
        int temp=tab[i+1];
        tab[i+1]=tab[i];
        tab[i]=temp;
        estRange=false;
      }
      if(!estRange) gauche();
    }
  }
  public static void gauche(){
    boolean estRange=true;
    int n=tab.length-1;
    for(int i=n;i>0;i--){
      if(tab[i]<tab[i-1]){
        int temp=tab[i-1];
        tab[i-1]=tab[i];
        tab[i]=temp;
        estRange=false;
      }
      if(!estRange) droit();
    }
  }
  public static void tri(){
    droit();
  }
  public static void main(String[] args) {
    System.out.println("TRI A BULLE");
    System.out.println("-----------");
    System.out.println("Init");
    RandomInit();
    affiche();
    System.out.println("Tri (biridictionnel)");
    tri();
    affiche();
  }
}

Pacman : un petit kit de démarrage dans le graphisme en Java avec AWT & SWING

gamejava

Voici le premier article d’une série que j’espère pouvoir compléter sur la création de jeu en Java. Cette série ne comportera que les rudiments, les outils que vous utiliserez afin de créer vos jeux. Il y a bien longtemps, j’avais introduit SWING & AWT avec mon projet Ninn, laissé un peu de côté ces derniers temps. Je reviens ici sur SWING & AWT, pour vous présenter un petit programme assez sympa et rapide à réaliser : Pacman. Nous ne verrons pas comment coder le jeu entier, mais simplement dessiner la petite boule jaune morfale. Si vous arrivez à comprendre comment fonctionne ce code, vous pourrez alors par la suite créer votre propre jeu Pacman ! 🙂

 APERÇU DU RESULAT FINAL DISPONIBLE ICI :

Pacman

prebloc

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;

public class Pacman extends JFrame{

 private int compteur ;
 Color couleur1, couleur2;
 public int x=70;
 public int x1;

 public Pacman(String titre, int largeur,int hauteur,int posX,int posY) {
 super(titre);
 setSize( largeur, hauteur );
 setVisible( true );
 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 this.setLocation(posX,posY);
 couleur2 = Color.yellow;
 }

 public void animer (int nbr_mouvement){
 for (compteur=0; compteur<nbr_mouvement; compteur++) {
 this.repaint();
 try {
 Thread.sleep(100);
 }
 catch (InterruptedException e) {
 e.printStackTrace();
 }

 if(x1<300){
 x=x+10;
 x1=x;
 }else{
 x=x-10;
 x1=300;
 }
 }

 //on relance la méthode pour obtenir une boucle infinie !
 if(compteur==nbr_mouvement){
 compteur=0;
 x1=0;
 animer(48);
 }
 }

 public void paint (Graphics g){
 if (compteur%2==0){
 couleur1 = Color.yellow;
 }else{
 couleur1 = Color.white;
 }
 if(x1<300){
 g.setColor( Color.white);
 g.fillRect(0,0,500,500);
 g.setColor( couleur1);
 g.fillArc(x, 60, 50, 50,0, 360);
 g.setColor( couleur2);
 g.fillArc(x,60, 50, 50, 30, 280);
 g.setColor(Color.DARK_GRAY);
 g.fillArc(x+25, 65, 7,7,0, 360);
 }else{
 g.setColor( Color.white);
 g.fillRect(0,0,500,500);
 g.setColor( couleur1);
 g.fillArc(x, 60, 50, 50,0, 360);
 g.setColor( couleur2);
 g.fillArc(x, 60, 50, 50,140, -280);
 g.setColor(Color.DARK_GRAY);
 g.fillArc(x+25, 65, 7,7,0, 360);
 }
 }

 public static void main(String[] args) {
 Pacman animation = new Pacman("Pacman", 400, 165,200,150);
 animation.animer(48);
 }

}

Quelques explications s’imposent ! :mrgreen: Tout d’abord nous travaillons avec SWING & AWT et nous avons besoin d’une JFrame. La JFrame permet de créer et gérer des objets de type cadres, fenêtres. C’est une sorte de conteneur pour les objets de type boutons, champs texte… Pour utiliser cela nous allons avoir besoin d’importer cet élément de la bibliothèque graphique SWING.

import javax.swing.JFrame;

Notre classe va hériter des propriétés, des méthodes et divers attributs de JFrame. Pour ça, on doit ajouter extends JFrame.

public class Pacman extends JFrame

Maintenant, détaillons en commençant avec les signatures :

public Pacman(String titre, int largeur,int hauteur,int posX,int posY)

Pacman est le constructeur, il permet de construire notre fenêtre dans son ensemble. Les attributs qu’on passe en arguments sont des caractéristiques propres à la création d’une fenêtre. De manière générale, pour créer une fenêtre nous devons créer un constructeur en suivant ce modèle :

public fenetre() {
	super("titre");//titre de la fenetre
	setSize( 900, 300 );//taille de la fenetre
	setVisible( true );//visibilite de la fenetre
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Pour fermer la fenetre
	this.setLocation(0,0);//position de la fenetre
}

Ici, dans notre code, on a passé en arguments les attributs afin de rendre le constructeur plus flexible. Je pourrais créer plein d’objets en y changeant les attributs :

public static void main(String[] args) {
	Pacman animation = new Pacman("Pacman", 400, 165,200,150);
	Pacman animation2 = new Pacman("Pacman2", 410, 150,200,150);//une autre fenetre aux dimensions différentes
	Pacman animation3 = new Pacman("Pacman3", 600, 175,200,150);//idem
        animation.animer(48);
}

(En rajoutant ces lignes, on créé trois fenêtres)

public void animer (int nbr_mouvement)

animer est une méthode void qui permet de faire tourner une boucle qui appelle, à chaque fois qu’on passe dans celle-ci, à la méthode qui dessine notre pacman. Le paramètre nbr_mouvement, permet de définir combien de fois nous afficherons pacman.

public void paint (Graphics g)

La méthode paint est propre à AWT et plus particulièrement à Graphics. Elle permet de dessiner… Des ronds, des rectangles…Vous pouvez consulter la javadoc d’Oracle à propos de Graphics.

C’est pour cette raison que nous importons des éléments de la bibliothèque AWT au tout début du programme :

import java.awt.Color;
import java.awt.Graphics;

Je vous laisse regarder cette doc, et bidouiller le programme afin de comprendre l’utilité de setColor(), fillRect(), fillArc() … Mais en gros, setColor() permet de définir la couleur de l’arrière-plan (blanc) et du pacman (jaune) , le  fillRect() nous permet ici de dessiner un rectangle plein, de couleur blanche, et le fillArc() le pacman. Pour dessiner notre pacman, j’ai délibérément choisi de le présenter à l’aide de deux disque, un disque plein jaune, et un quart de disque dont la couleur alternera :soit blanc, soit jaune. Le compteur permet d’alterner entre « pacman bouche ouverte » et « pacman bouche fermée » :


if (compteur%2==0){
couleur1 = Color.yellow;
}else{
couleur1 = Color.white;
}

Il existe bien sûr d’autres méthodes, par exemple deux disques jaunes un complet et un ouvert ou encore un seul disque donc l’angle d’ouverture change selon la valeur du compteur. Tout est possible ! 😀

Vous avez normalement toutes les données nécessaires pour refaire le pacman présenté en vidéo.

Prochainement, nous verrons comment bouger le pacman avec le clavier, puis si j’ai le temps nous nous pencherons sur les collisions (ex : pacman ne peut pas traverser le mur).  🙂

P.S : WordPress a un peu de mal avec l’indentation, n’oubliez pas de  bien indenter votre code ! 😉

classicgames_64

Les pointeurs en C

#include <stdio.h>
int main(int argc, char *argv[]){
    /*
        RAPPEL
        pointeur > contenu de pointeur
        *pointeur > pointe à l'adresse qu'on lui a donné.
        &pointeur > adresse du pointeur lui-même
    */
    /* INITIALISATION */
    int chiffre=20;
    int *pointeur= chiffre;//en fait ça n'a aucun interet, cela revient à dire int pointeur=chiffre;
    int *pointeur1 = &chiffre;//là si car on donne juste l'adresse
    int *pointeur2 = &pointeur1;//plus complexe car je donne l'adresse du pointeur1
    int *pointeur3 = pointeur1;//valeur de pointeur1 = adresse de chiffre
    /* AFFICHAGE */
    printf("POINTEURS \n");
    printf("Contenu de ma variable \"chiffre\" : %d\n", chiffre);
    printf("Adresse de chiffre : %d \n", &chiffre);
    printf("\n");
    printf("Valeur contenue dans \"pointeur\" : %d\n", pointeur);
    printf("Adresse de \"pointeur\" : %d\n",&pointeur);
    printf("\"*pointeur\" n'existe pas");//printf("%d\n", *pointeur); retourne une erreur monumentale !!
    printf("\n");
    printf("\n");
    printf("Contenu de \"pointeur1\" : %d\n", pointeur1);
    printf("Contenu de l'adresse donnée à \"pointeur1\" : %d\n", *pointeur1);
    printf("Adresse de \"pointeur1\" : %d\n",&pointeur1);
    printf("\n");
    printf("Valeur contenue dans pointeur2 : %d\n", pointeur2);
    printf("Contenu de l'adresse donnée à \"pointeur2\" : %d\n", *pointeur2);
    printf("Adresse de \"pointeur2\" : %d\n",&pointeur2);
    printf("\n");
    printf("Valeur contenue dans  \"pointeur3\" : %d\n", pointeur3);
    printf("Contenu de l'adresse donnée à \"pointeur3\" : %d\n", *pointeur3);
    printf("Adresse de \"pointeur3\" : %d\n",&pointeur);
    getch();
    return 0;
}

RESULAT :

POINTEURS
Contenu de ma variable « chiffre » : 20
Adresse de chiffre : 2293528

Valeur contenue dans « pointeur » : 20
Adresse de « pointeur » : 2293524
« *pointeur » n’existe pas

Contenu de « pointeur1 » : 2293528
Contenu de l’adresse donné à « pointeur1 » : 20
Adresse de « pointeur1 » : 2293520

Valeur contenue dans pointeur2 : 2293520
Contenu de l’adresse donné à « pointeur2 » : 2293528
Adresse de « pointeur2 » : 2293516

Valeur contenue dans « pointeur3 » : 2293528
Contenu de l’adresse donnée à « pointeur3 » : 20
Adresse de « pointeur3 » : 2293524

P.S : Pour les adresses, si vous ne trouvez pas le même résultat, c’est normal, cela dépend de votre PC, ou plus précisément de votre processeur.

Un peu de maths : Les puissances 1/2

Voyons comment creer un programme de calcul des puissances.
Petit rappel sur les règles de la puissance :

  • x^0 = 1.
  • x^y = x^(y/2)*x^(y/2) si y est pair.
  • x^y=x^(y-1)*x sinon.

Le petit programme qui suit calcule les puissances de 2 :

class puissance{
  static double puissance(double x,int n){
    double reponse;
    if (n==0) {
      reponse=1;
    }else{
      reponse=puissance(x,n/2);
      if(n%2==0){
        reponse=reponse*reponse;//pair
      }else{
        reponse=reponse*reponse*x;//impair
      }
    }
    return reponse;
  }
  public static void main(String[] args) {
    double x;
    for (int i=0; i&lt;=16;i++) {
      x=2;
      System.out.println("2^"+i+" = "+(int)(puissance(x,i)));
    }
  }
}

Résultat sur le terminal :

nerdyprog@nerdycode ~ $ javac puissance.java
nerdyprog@nerdycode ~ $ java puissance
2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512
2^10 = 1024
2^11 = 2048
2^12 = 4096
2^13 = 8192
2^14 = 16384
2^15 = 32768
2^16 = 65536

Nous pouvons améliorer ce programme de façon à demander à l’utilisateur de taper le chiffre ainsi que la puissance voulue. Nous verrons ça dans la prochaine partie ! :mrgreen: