Site Perso de

Thomas JANNAUD

Des actualités personnelles sous un style impersonnel, et inversement.



Mes codes open source
Des dizaines de sources et snippets, pour apprendre ou se perfectionner 14 Mai 2009

Visual Basic

Certaines sources ne sont là que pour mettre en avant une fonction particulière avancée du système d'exploitation. Elles sont mentionnées par des **** astérisques ****.

Les chiffres entre parenthèses de 1 à 3 indiquent le niveau de difficulté de celle-ci : 1 - Facile, 3 - Difficile

N'ayez pas peur de télécharger : ce sont des sources, pas des fichiers exécutables. Vous pouvez donc les ouvrir, regarder le code, et copier-coller la fonction qui vous intéresse. Et l'exécuter, c'est vrai. Mais comme vous avez le code, vous pouvez vérifier qu'il n'y a pas de commandes comme "Kill"... Il y a aussi des gens biens sur internet !

'Catalogue' d'API
TRES UTILE !!! C'est l'unique fichier ici qui n'est pas un fichier source. Il répertorie de nombreux API que l'on peut avoir à utiliser, ainsi que des exemples d'utilisation.
(1) BlackJack
Un petit jeu de blackjack (vous pouvez télécharger l'exécutable ici, qui est sur cette page de toute manière), pas franchement excitant il faut bien l'avouer. Utilise le fichier cartes.res, et c'est bien là la seule particularité de la source.
(3) Cabri Géométrie
Programme destiné à copier Cabri Géométrie, non finalisé. Il fonctionne cependant parfaitement et donne un très bon exemple de l'utilisation de classes et d'objets en VB. Montre aussi comment déplacer un point d'un graphique avec la souris.
(2) Agenda
Un agenda assez complet que je me suis fait (et dont je ne me sers pas !). C'est une bonne idée que d'essayer de se faire un agenda pour s'obliger à programmer. Contient un module que j'ai fait pour déterminer quel jour de la semaine correspond à quelle date.
(2) Cartes
Un exemple d'utilisation de fichier *.res, très utile par ailleurs si vous voulez vous confectionner votre propre jeu de cartes, puisque vous auriez alors à trouver 52 images pour les 52 cartes existantes. Elles vous sont ici livrées sur un plateau !!! Alors profitez-en !
***** Module ***** pour éteindre l'ordinateur, changer d'utilisateur, et gérer le registre.
ah ah ah... Vous allez sentir la puissance monter en vous avec ça dans vos mains :)
(2) Découpeur de fichiers
Coupe les fichiers en fichiers plus petits. Utilise la lecture binaire de fichiers.
(1) Démineur
Pas exactement comme le démineur de Windows, mais presque. Il s'agit ici en partant d'en haut à gauche d'arriver en bas à droite, sans marcher sur une mine. L'interface graphique est très moche.
(1) Drifter
J'ai voulu imiter un jeu de TI-89 (une calculatrice graphique programmable). C'est un vaisseau spatial qui doit éviter les murs d'un tunnel.
(3) Traceur de courbes
Avec celui-ci on ne rigole pas, s'il vous plait. J'ai mis 1 an et demi à le faire, et c'est le long de ce chemin de croix tortueux que j'ai appris à m'affranchir des méandres de ce langage de programmation. Il gère l'impression des graphiques, une MSFlexGrid, une mise en page pour avoir le graphe d'un coté et la MSFlexGrid de l'autre, les courbes 3D, les suites définies par récurrence, ... Un petit bijou.
(2) Apprendre le japonais
Il faut déjà savoir lire au moins les hiragana (ひらがな) et les katakana カタカナ. Il y a 20 mots environ fournis avec le programme, qui vous teste dessus selon 3 manières (à vous de vous taper la recopie d'autres mots. C'est pour vous montrer comment faire ce genre de programme, avec sauvegarde des options dans le registre, de vos stats dans un fichier, ... pas pour vous donner gratos 3000 mots.)
Par contre vous pouvez gratuitement apprendre ces 3000 mots sur la page de vocabulaire japonais qui vous teste de la même manière que le programme VB, ou aussi avec l'application (Mac).
Pourquoi une version Mac complète, une version site web complète et pas la version PC complète ? Parce que sur le programme PC les mots sont dans un petit fichier joint, donc ça vous donne tout gratuitement, alors que sur Mac j'ai pu mettre les mots codés en dur dans le programme (donc irrécupérables) et sur le site Web c'est un peu pareil, ils sont dans une base de données, donc irrécupérables aussi.
***** Ouvre CD *****
Ouvre le lecteur CD
(2) Phoenix
Un jeu que j'ai fait durant un stage de 5 mois dans les locaux de la Gendarmerie. Puisque même au pays des clowns on peut ne pas rigoler, il fallait bien que je décompresse ! Ça ressemble à Space Invaders. Il utilise DirectDraw, DirectSound, la gestion des touches, ... et en plus le jeu est pas mal. Appuyez sur les touches de 1 à 8 pour changer d'arme. Là encore, j'ai repris le jeu Phoenix de la TI-89.
(2) Plan Action
Un des logiciels que j'avais fait gratuitement pour la Gendarmerie, même s'ils ne me l'avaient pas demandé. Je le mets là surtout pour montrer l'utilisation de Excel.
(1) Twizzer
Un jeu que j'ai fait, assez rigolo, surtout quand on joue avec quelqu'un qui confond la droite et la gauche. Utilisation des touches de manière soft.
(1) Package "utilisation du système", par "spacecrol"
Diverses sources sur le thème de la recherche de fichiers sur votre ordinateur, la taille du disque dur, le registre, ...
Screen saver
Un cow boy qui tire aléatoirement sur la photo de quelqu'un, et qui rigole quand il touche la cible (mouvante). Attention, si la souris est sur la form ou si vous appuyez sur une touche pendant le déroulement du programme, celui-ci s'arrête. Joue des sons de Worms 2 (le "vrai" jeu payant, pas le mien qui est un serpent) sans DirectSound, mais avec un contrôle multimédia.
**** Un .exe dans un .exe ****
Gestion des fichiers .res, appliquée à insérer un fichier .exe dans le système à l'insu de l'utilisateur.
(2) Worms
Un serpent à 32 directions, sympa à jouer (seul ou à deux). Gestion des touches soft. Encore un jeu de TI 89 que j'ai décidé de reproduire.
(3) Wormwar
Un jeu du serpent peu commun : pas de pomme à attraper, mais un adversaire à éliminer. Tant que le serpent peut avancer il grandit, et il rétrécit quand il est bloquer. Il faut donc bloquer son adversaire pour le tuer, et jouer 3 ou 4 parties avant de comprendre comment ça marche. Mais après on s'amuse drôlement. Gestion des touches et mini intelligence artificielle (si si ! essayez de battre mon serpent en niveau difficile et vous verrez).
(3) Wormwar Screen Saver
Cette fois-ci vous regardez l'ordinateur jouer contre lui-même, en mode écran de veille (même si ça consomme plus d'énergie que quand c'est pas en veille. A n'utiliser que sur les ordinateurs alimentés sur secteur).

Plus spécialisé

Les sources ici ne sont pas de moi. C'est une sorte de "best of" de VBFrance, sur l'année 2002 à peu près. Les sources DirectDraw sont souvent intéressantes, non pas parce que le jeu est bien, mais parce que ça nous apprend à nous servir de DDraw alors qu'il n'y a que très peu d'exemples

Je vous conseille de faire comme j'ai fait il y a 6 ans, c'est à dire de télécharger toutes ces sources (une ou deux par jour) et de les lancer, juste pour voir ce que ça fait. C'est comme ça que ça reste dans la mémoire, et que 6 ans après vous vous rappellerez que "oui ! j'ai déjà vu comment faire ça quelque part"... vous verrez !

P.S : tout devrait avoir des **** **** ici, avec les notations précédentes.

(2) Package ActiveX
3 sources activeX, i.e 3 contrôles faits grâce à VB (New Project -> Contrôle ActiveX), que vous pouvez maintenant utiliser dans vos programmes, où étudier pour vous faire à votre tour votre propre contrôle. Comprend un label Hyperlink (i.e ressemble à un lien hypertext), une MsgBox vraiment très sympa, et une progressBar.
(1) Api Démarrage
Demande un mot de passe à l'ouverture de l'ordinateur, et éteint l'ordinateur si l'on se trompe. Utilise un Api qui empêche de cliquer autre part que sur une fenêtre de notre programme. Très pratique.
(2) Arkanoïd
Un casse brique. Utilise DirectDraw.
(3) Bataille navale en réseau
Un jeu en réseau !!!
(2) Bitmap to Avi
Transforme des fichiers bitmaps en un fichier avi.
(3) Calcul
Calcule des chaînes de caractères : expressions du type "2+3+4" ou "sin(2+3*cos(4))"
(1) Cartes
Explication sur les fichiers res et utilisation d'un fichier de ce type contenant les 53 images d'un jeu de cartes (52 + 1 joker). Ultra pratique !!!
(2) Casse brique
Utilise Direct Draw
(2) Chaîne vertébrale
Un corde qui suit la souris. Très bien fait (inertie, ...)
(1) Résolution de l'écran
Change la résolution de l'écran
(2) Editeur hexadécimal
un éditeur hexadécimal
(1) Compresseur jpg
Compresse les fichiers jpg
(2) le Compte est Bon
Un solveur du fameux jeu "le compte est bon"
(1) Convertisseur jpg en bmp
Convertit... les fichiers jpg en fichiers bmp
(1) Direct3D
Un exemple simple d'utilisation de Direct 3D
(2) DirectX ou Direct3D ou OpenGL
Un "package" pour expliquer comment utiliser la 3D, avec même un exemple : déplacement d'un personnage sur un terrain 3D !!!
(1) Port Parallèle
Utilisation du port parallèle pour allumer une ampoule. (je n'ai jamais essayé, je n'ai pas le matériel pour faire de la domotique, mais ça m'intéresserait effectivement beaucoup de m'y mettre !!!)
(2) e-mail
Envoyer un e-mail depuis votre code. Super, surtout si : 1) on veut cacher son nom d'expéditeur ou 2) on veut envoyer 500 mails à 500 personnes dont on a les e-mails dans un fichier texte ou dans Excel, pour leur prévenir qu'on change d'adresse. Ou pour souhaiter la bonne année, si on aime bien les petits messages personnalisés :)
(1) Exécuter une chaîne de caractères
Très beau !!! Ça part du principe que sur windows il y a une console, et donc ce qu'on écrit est interprété. Et donc on peut très bien envoyer une commande au système sous la forme d'une chaîne de caractères. Ce peut être "cd .." ou "calculer 2+3+4*5", toujours délicat à programmer. (cf cependant d'autres sources qui le font très bien, mais qui ne font essentiellement que ça). Ça ne le fait malheureusement pas assez vite pour pouvoir en faire un traceur de courbes, mais pour calculer une valeur toutes les 30 secondes ça ne se verra même pas pour l'utilisateur.
(2) Transparence
Rendre transparentes les parties d'une Form. Peu utile, mais rigolo.
(2) Handle souris
C'est justement ce code qui explique comment savoir ce qu'il y a écrit derrière les ***** d'une boîte texte, d'un programme qui n'est pas à nous (ex : logiciel de connexion internet). Très pratique, surtout si on a oublié son mot de passe, mais pas l'ordinateur. Explication sur les handle ici.
(2) Hooker
Hook le clavier pour tous les lgociels, même ceux qui ne sont pas à vous, c'est à dire va récupérer l'appui sur les touches avant que l'événement ne soit transmis aux diverses applications en cours d'exécution. Intérêt ?
  • vous pouvez changer la valeur des touches (remplacer les 'a' par des 'b' par exemple ce qui ne sert à rien sauf pour rire et montrer qu'on sait le faire
  • Si une touche ne nous plait pas, demander à faire comme si elle n'avait pas été pressée. (exemple : ctrl-alt-suppr)...
(1) Icone Tray
Les icônes Tray sont les petits icônes qui se trouvent dans la barre bleue Windows tout en bas à droite, à côté de l'heure. Vous pouvez mettre un petit icône là-dedans à vous, et même savoir quand est-ce que le clic droit ou gauche ou double-clic intervient dessus. Ça fait pro, et propre.
(1) ImageMenu
Sert à glisser des icônes dans vos menus. Plus joli.
(1) Popup Icon
Insère des icônes dans vos popup menus.
(1) Icône dans les menus
Glisse des icônes dans les menus. Encore une source là-dessus. Choisissez donc celle qui vous plait le plus !
(2) Déplaceur et Resizer de contrôles
Ultra pratique ! Si vous voulez que l'utilisateur puisse redimensionner un contrôle, et le déplacer, ce code placera 8 carrés autour du contrôle, un peu comme les images dans Word ou Excel par exemple.
(3) Info Bulle
Crée de très jolies info-bulles, avec des images bitmap à vous. C'est intéressant de voir que Windows qui est tant décrié par les programmeurs a quand même beaucoup pensé à eux : ce code (à rapprocher de "transparence") montre qu'on peut obliger Windows à gérer beaucoup de choses, et il le fait très bien.
(2) IP, MSN et transparence
Indique notre IP, si l'on est connecté à MSN et gère la transparence de la fenêtre
(1) jeuxvideo.com searcher
Recherche un jeu sur www.jeuxvideo.com : et oui, VB peut se connecter à internet !!!
(1) Launcher
Vous sert d'interface avec vos fichiers : montre comment lancer une application (Winamp, ...) en fonction du type de fichier à ouvrir.
(1) Tour de magie
Assez rigolo : pensez à un nombre et l'ordinateur vous le trouve. Cherchez l'astuce !
(2) Matrix
Peut servir à se faire un screen saver : des lettres qui tombent en vert fluo sur fond noir. Très bien fait parce que les lettres s'estompent avec le temps ce qui ne colore pas entièrement le fond d'écran. Utilise Direct Draw.
(0) Attributs des fichiers
Modifie "caché", "lecture seule", ... de fichiers.
(1) Crypte vos fichiers
Assez malin : choisissez un fichier et un mot de passe, et ce code va ouvrir le fichier en mode binaire, et crypter les bits uns à uns en fonction du mot de passe choisi. Comme ça vous avez un nouveau fichier et il vous faut ce logiciel et votre mot de passe pour l'ouvrir. Pour les gens qui ont des choses à cacher... Utile donc pour comprendre la crypto (très bas de gamme mais c'est quand même un bon exemple) et la lecture/écriture d'un fichier en mode Binary
(2) Moteur 2D
Très pratique. Au lieu d'apprendre comment dire à Direct Draw d'effacer l'écran, de tracer une ligne, de charger une image, ... vous prenez ce code et vous utilisez les fonctions "initialise", puis "tracer", "chargerimage", ... En clair ça marche comme une interface entre DDraw et vous. Utilise donc Direct Draw et même Direct Sound pour jouer de la musique en arrière plan.
(1) Nouveau Menu
Permet d'ajouter un sous-menu à un menu déjà existant. Pratique si vous voulez avoir un menu "Fichiers récents" et que ça peut varier de 1 à 10 par exemple.
(1) Pentech
Evalue la vitesse de votre ordinateur, en le confrontant à diverses tâches.
(1) Récupérateur d'icônes
Récupère les icônes d'exécutables de votre ordinateur. Vous montre comment utiliser les FileListBox et DirListBox (en les corrélant).
(0) Bloquer une Form
Bloque une form dans sa position, sa taille ou son positionnement (au dessus) des autres form.
(1) le registre
Implémente des fonctions de création de clé, d'existence de clés, ... pour le registre + un petit fichier expliquant où trouver certains attributs bien particuliers de Windows.
(1) Resize form
Impose une taille minimal et maximale à une fenêtre, par le biais des API.
(1) Convertisseur RGB TLS
Très utile. Par contre, pas grand chose à essayer de comprendre, ce sont surtout des formules pour convertir une couleur donnée en RGB (red, green, blue) en TLS (teinte, luminosité, saturation).
(1) Screenshot
Crée des screen shots
(2) Shoot Game
Utilise Direct Draw et Direct Sound. Jeu de tir sur des cibles avec votre souris (aller vite et être précis) qui se trouve un intérêt même autre que purement didactique.
(1) Form en forme de smiley (transparence, ...)
Rigolo, mais inutile à première vue. Crée des zones de transparences sur une fenêtre pour la faire ressembler à un clown. Apprend cependant à manier les 'Region' de Windows, et c'est assez beau de se dire qu'ils ont trouvé le moyen de gérer (et donc mémoriser) des 'Region'. (la réponse n'est pas simplement "ben... c'est la carte graphique". Oui, c'est la carte graphique, mais la question c'est comment ?). Si vous ne comprenez pas ce que je dis, relisez ça dans un an après avoir fait pas mal de programmation graphique. Et si vous ne comprenez toujours pas, ce site ou celui-ci ou encore celui-là seront plus adaptés que le mien.
(1) Stenographie
Cache un fichier dans une image, en jouant sur les bits à faible poids des images. Un genre de cryptage.
(1) Suit la souris
Très mignon. Un ange qui bat des ailes qui suit la souris là où elle va. Une sorte de gif animé. Mais comme VB ne les gère pas, il faut l'implémenter avec des bmp.
(2) ToolTip personnalisés
Peut s'avérer très pratique !!! Choisissez le temps avant l'apparition du tooltip, l'image associée, faites les tenir sur plusieurs lignes, ...
(1) e-mail
Encore un code pour envoyer des mails. Utilise AspMail (il faudra le télécharger ce qui semble contraignant), mais... ça marche très très bien ensuite

CamL

Les codes qui sont ici n'ont pas vocation à être utilisés tels quels, mais plutôt à vous montrer comment faire telle ou telle chose en CamL (ex : fonctions dans une fonction, ...)

Nombres complexes
Classes spéciale : un module, avec mot clé "struct" (même pas vue dans le tutoriel), qui gère les nombres complexes.
Construction d'un type
Un exemple simple qui illustre la construction d'un type.
Fonctions basiques sur les listes
Beaucoup de fonctions de la bibliothèque "List" implémentées. Idéal pour apprendre à travailler sur les listes proprement. Essayez de refaire ces fonctions vous même !
Les Piles
Implémentation d'une structure de pile. Idem entraînez-vous à implémenter vous-même cette structure.
Tris de tableaux
Divers tris sur les tableaux.
Tri par tas
Une implémentation du tri par tas
Tris sur les listes
Divers tris sur les listes

Prologin

Vous trouverez ici les codes que j'ai envoyé sur Prologin. De même, pour vous entraîner, essayer de résoudre les exercices vous même. C'est seulement si vous n'y arrivez pas que vous devriez jeter un oeil à mes codes, pour comprendre non pas l'algorithmique derrière, mais comment implémenter un algorithme en CamL.

Tout en bas des fichiers sont implémentées les entrées, souvent délicates pour les débutants (comment lire un tableau en entrée, puis une chaîne, puis 2 entiers, ...).

C++

(1) Fichier Wav
Le meilleur moyen pour comprendre comment l'ordinateur joue un son, c'est de coder soi-même un fichier, et de voir ce que ça donne ! Ce code source C++ génére un .wav qui fonctionne, et vous pouvez vous amuser à faire varier certaines choses dans le code pour comprendre.
(2) calcul formel
Une très belle illustration de la puissance des classes et de la programmation orientée objet. Une utilisation concrète des classes virtuelles, et des arbres dans le but de calculer des expressions du type "2 + 3 * 4 + sin(3.14/2)" et même du type "sum(i^2, i, 1, x)" (somme des carrés des x premiers entiers)

Java

(1) interface par coordonnées et (1) interface par layouts interface java construite pixels par pixel
Code du tutoriel java de quelques lignes pour réaliser de petites interfaces avec Java, en plaçant les contrôles précisément (positionnement par coordonnées) ou avec des Layout.
(2) Projet Crypto
Ce code tente de décoder un texte, sans accents ni ponctuation, crypté à l'aide d'une permutation des lettres de l'alphabet. Le texte peut avoir des noms propres. (d'après un Article de S.Lucks)
(3) Projet Wiener
Ce code tente de décrypter une clé RSA grâce au développement en fractions continues. (d'après un Article de Wiener) Il marche très bien dans le cas où les facteurs n'ont pas la même taille (cela optimisait le décodage des cartes bleues dans les distributeurs de billets).
(2) Rubik's Cubescreenshot d'un applet rubiks cube
Le cube qu'il y a dans mes pages Rubik's Cube, donc 3D + gestionnaire de la souris pour orienter le cube + Thread, le tout sous forme d'applet.
(2) Horlogescreenshot d'un applet horloge
Une applet dessinant une horloge ; donc utilisation du dessin et des Threads.
(3) Détection de contoursscreenshot de la détection de contours
Détection de contours basée sur l'article N. Xu, R. Bansal, N. Ajuja: Object segmentation using graph cuts based active contours, CVPR 2003. Il s'agit de dire qu'une image est un graphe où chaque pixel est un sommet et les arêtes correspondent aux voisins de ces pixels, avec un poids élevé lorsque le niveau de gris est similaire, faible si c'est très différent. On fixe alors la source comme l'intérieur d'une zone, le puits comme l'extérieur, et on cherche la coupe minimale de ce problème de flot.
Algorithmiquement : utilisation des threads, algorithme de Ford Fulkerson, min-cut, gestion des images en Java, algorithme de Bresenham pour relier 2 pixels par une ligne, ...
(3) Détection de contours (Applet) (fonctionnalités réduites mais code élagué)
(3) Triangulation (Applet)screenshot de la triangulation de delaunay
La triangulation se fait ici par insertion, et l'algorithme est assez "maison", c'est à dire que soit le point est dans un triangle et alors on le raccorde aux 3 sommets, soit il est hors de l'enveloppe convexe et il faut chercher les "tangentes". A chaque insertion d'un segment on cherche s'il faut le "fliper" (cf wikipedia), et quand il y a un flip on teste récursivement s'il faut fliper les voisins. Le diagramme de Voronoï se fait étonnament assez simplement, une fois que la triangulation est calculée. Quand le point inséré est dans l'enveloppe convexe, on cherche dans quel triangle l'insérer avec "l'arbre des anciens triangles", que l'on a sauvegardé. Un petit travail supplémentaire qui alourdit le code plus qu'il ne le fait gagner en vitesse semble t'il.

AppleScript

Voici tout d'abord une liste de tutoriels assez complets sur AppleScript, mais aussi assez longs.

Les bases
Ni trop peu, mais un peu trop. Mais très bien pour débuter et comprendre le fonctionnement d'AppleScript.
Les baaaaases
Pdf du même accabit que celui juste au dessus, en plus long et plus détaillé et avec plus d'exemples.
Guide des Objets AppleScript
Détaille beaucoup d'objets (graphiques, cette fois) et leurs propriétés, avec des exemples. Très utile.

AppleScript est un langage somme toute assez limité en vitesse (cf mon programme pour apprendre le japonais, qui met 1 minute à chercher un mot dans une liste de 3000 mots...) et donc autant passer à Objective C si c'est pour faire une application. Par contre AppleScript est un langage de script agréable qui nous évite de passer par le terminal et de faire des scripts en bash (surtout que le bash du Mac est pourri). Je m'en sers par exemple quand je télécharge 100 chansons de Claude François, et qu'elles sont numérotées 01 - Si j'avais un marteau, 02 - ..., 03 - ... alors que moi j'aime bien avoir Claude François - Si j'avais un marteau, Claude François - ..., Au lieu de renommer à la main 100 fichiers je lance un petit script !

Les gens chez Apple ont vraiment pensé à tout avec AppleScript : Faites tell app "iTunes" to pause, et... ça marche. Dingue non ? On se rend compte que la programmation Mac est quand même simple de ce coté. (Alors qu'on en ch*e en VB pour faire faire un truc à un logiciel de notre ordinateur).

(2) Exemple d'utilisation de l'interface builder et des objets
Ça montre comment écrire dans un label, savoir quand il y a un clic, ... Bref j'aurais vraiment aimé l'avoir quand j'ai débuté, parce qu'il n'y a pas beaucoup d'exemples sur le Net. (peut-être parce que tout le monde ne s'arrête pas plus d'un mois sur ce langage ? ^^)
(1) Calcul de PGCD
Demande 2 nombres à l'utilisateur et calcule le pgcd. C'est juste un script, il n'y a pas d'interface, mais ça montre la structure d'un script, et qui plus est quand il y a une interface, derrière c'est quand même un script, donc... il faut savoir le faire.
(1) iCal et (1) iCal2
Lis les événements qu'il y a dans iCal, de 2 manières : la première en automatisant/maîtrisant iCal, la seconde en lisant les fichiers de la bibliothèque.
(1) renomme les Fichiers
Renomme les fichiers d'un dossier selon la syntaxe que vous voulez. (cf l'exemple sur Claude François)
(3) Apprentissage du japonais screenshot de Jeu apprendre japonais français japanese french Cocoa Applescript Mac App
Un gros, disons les choses comme elles sont, programme pour apprendre le japonais. Il faut déjà savoir lire au moins les hiragana (ひらがな) et les katakana カタカナ. Il y a 3000 mots environ fournis avec le programme, qui vous teste dessus selon 3 manières. Téléchargez l'application (Mac).
(1) imprimer des pages web
Vous fournissez une liste d'URL de pages web que vous vouez imprimer, et le script va les ouvrir une par une et appeler un petit script automator qui va vous imprimer tout ça.

Widgets Mac

Je rappelle qu'un widget est comme une page web : c'est du code non compilé, ce qui fait que les widgets que vous téléchargez ici sont prêts à l'emploi ET éditables (pour voir comment ils sont faits).

iCalendarscreenshot du widget icalendar
Le Widget iCal est pourri parce qu'il ne colore par les dates où il y a des événements, ce qui est un peu dommage. Le mien le fait, et il est synchronisé sur l'application iCal. Utilise l'objet Canvas pour créer un joli fond dégradé, et un script AppleScript pour savoir ce qu'il y a dans vos événements iCal.

iPhone

Une application iPhone ressemble de très près à une application Cocoa / Objective-C (pour Mac), donc les choses que vous voyez ici peuvent facilement être reprises pour être mises sur ordinateur, ce que j'ai d'ailleurs fait pour Wormwar et BrainGame. Il y a aussi une page spécialement dédiée à mes applications iPhone.

Pour l'histoire, ces jeux sur iPhone représentent un peu mes premiers pas en programmation Cocoa donc certaines techniques que j'utilise ne sont pas un modèle du genre, mais il y a des choses bonnes à prendre pour les débutants, j'en suis sûr + beaucoup de petits snippets comme afficher une image png, jouer un .wav, utiliser un timer qui bippe toutes les secondes, ... (quasiment toutes les applications utilisent ces choses)

(1) Brain Gamescreenshot de Simon's Game iPhone App
Un petit jeu où l'ordinateur invente une mélodie, et où il vous la fait apprendre : 4 carrés rouge, vert, jaune, bleu qui clignotent suivant cette mélodie, et vous devez la réciter. Utilise les timers, la sauvegarde des préférences (meilleur score, ...), le redessin/rafraîchissement de l'écran, les sons, ...
(1) Be Happyscreenshot de Be Happy iPhone App
Un programme qui ne fait rien à part dire que votre iPhone est protégé contre les virus. Joli et inutile. Petite source d'une dizaine de lignes qui n'utilise juste les NSTimer.
(1) Wormwarscreenshot de WormWar iPhone App
Le jeu du serpent, où il y a une petite intelligence artificielle programmée. Vous devez tuer les serpents de l'ordinateur qui essayent aussi de vous tuer. Utilise principalement les timers et le redessin de l'écran ([ setNeedsDisplay:YES] d'une NSView) et le toucher de l'écran.

Cocoa / Objective-C

(1) Memory Gamescreenshot de Jeu mémoire Brain Game Cocoa Mac App
Le même jeu que sur iPhone avec en plus la sauvegarde des préférences (meilleur score, partie avec mort subite ou non, ...), ouvrir une fenêtre "modale" (celle des préférences), ...
(1) Wormwarscreenshot de Wormwar Cocoa Mac App
Le même jeu que sur iPhone avec en plus la possibilité de jouer à 2 joueurs en un contre un ou bien à deux contre l'ordinateur.
(1) Puissance 4 screenshot de Puissance 4 connect four Cocoa Mac App
Le jeu bien connu, contre l'ordinateur ou à deux. En 2D ou en 3D ! (grille 4 * 4 * 4 pour faire des nœuds au cerveau !)
screenshot de Puissance 4 3 dimensions connect four Cocoa Mac App
Cabri Géométrie screenshot de Cabri Géométrie Cocoa Mac App
Utilisation concrète de ces outils qui simplifient la vie d'un programmeur Cocoa : l'UndoManager pour gérer automatiquement l'action Undo, sérialisation (= sauvegarde simple d'un objet, ...). Il y a aussi une utilisation massive et élégante des classes et de l'héritage.

Exécutables Mac

Memory Gamescreenshot de Jeu mémoire Brain Game Cocoa Mac App
Le même jeu que sur iPhone.
Wormwarscreenshot de Wormwar Cocoa Mac App
Le même jeu que sur iPhone avec en plus la possibilité de jouer à 2 joueurs en un contre un ou bien à deux contre l'ordinateur.
Cabri Géométriescreenshot de Cabri Géométrie gratuit Cocoa Mac App
Permet de construire des figures géométriques compliquées, comme en maths, à partir de "contraintes". Ex : un triangle, le cercle circonsrit, un point sur ce cercle, la tangente à ce point, la droite perpendiculaire à la tangente et passant par un des sommets du triangle, ...
Japonais screenshot de Jeu apprendre japonais français japanese french Cocoa Applescript Mac App
Petit programme pour vous tester sur quelques 2000 mots de japonais. Identique à l'entraînement en ligne. La source de ce programme AppleScript (Studio) est ici.
(1) Puissance 4 screenshot de Puissance 4 connect four Cocoa Mac App
Le jeu bien connu, contre l'ordinateur ou à deux. Vous pouvez aussi y jouer en version 3D !
screenshot de Puissance 4 en 3 dimensions connect four Cocoa Mac App

Exécutables PC

BlackJack
Un petit jeu de blackjack que j'ai fait en VB (vous pouvez télécharger la source ici, qui est sur cette page de toute manière), pas franchement excitant il faut bien l'avouer
Screen saver
Un cow boy qui tire aléatoirement sur la photo de quelqu'un, et qui rigole quand il touche la cible (mouvante). Attention, c'est un .scr, ce qui signifie que c'est un Screen Saver. En d'autres termes, si la souris est dessus ou si vous appuyez sur une touche pendant le déroulement du programme, celui-ci s'arrête. Lancez le en cliquant dessus, puis en faisant Entrée. La souris doit être dans l'un des coins de votre écran avant. Téléchargez la source (sur cette page de toute façon) pour faire de même avec vos propres photos, ça produit toujours son petit effet.
Remarque : Un .scr est en fait un .exe où l'on a remplacé l'extension. A vous de coder le fait que si l'on appuie sur une touche ou si l'on bouge la souris le programme s'arrête.
Twizzerscreenshot de Twizzer en VB
Vraiment un bon petit jeu que j'ai fait, assez rigolo, surtout si vous jouez avec quelqu'un qui a toujours du mal à coordonner ses mouvements. La source est disponible ici, c'est à dire aussi sur cette page.
Worms screenshot de Worms, serpent à 32 directions
Encore la version exécutable de ma source du même nom. Un serpent à 32 directions, qui se joue à seul ou à deux.
Wormwarscreenshot de Wormwar pour PC
Idem. Le jeu est vraiment vraiment bien, sincèrement. C'est un serpent qui doit tuer les autres, on peut toucher les murs, tout ce qu'il faut c'est ne pas être bloqué. Il se joue seul contre l'ordinateur ou à 2. source. (PS j'ai aussi reprogrammé ce jeu sur iPhone et sur Mac)
À lire aussi :
Laissez un commentaire !

Pas besoin de vous connecter, commencez à taper votre nom et une case "invité" apparaîtra.