Ham invader -> space invader version hamtaro [violent]

Soyez le premier à donner votre avis sur cette source.

Vue 6 774 fois - Téléchargée 931 fois

Description

Tout dabord, JOYEUX NOËL !

Ceci est un petit moteur de jeu 2D qui affiche un vaisseau très simplifié, le déplace grâce à une saisie de touche à chaque répétiton de la boucle, lui permet de tirer (donc déplacement du missile) et affiche un hamster identique à Hamtaro (non non, je ne suis pas sponsorisé ^^) qui se déplace de gauche à droite et meur quand un missile le touche (/!\ Attention à vos enfants aux âmes sensibles, surtout s'ils aiment le dessin annimé).

Ce programme à surtout été développé pour montrer l'utilité d'une de mes sources (http://www.vbfrance.com/code.aspx?ID=33557) pour afficher une image en assemleur, sans avoir à la coder soi-même.

Le code en lui-même est dans sou.asm. Les autres fichiers textes ne sont que des sprites. Le fichier JEU est un exécutable, à renommer en .com ou .exe)

Source / Exemple :


CMP AX,'ça m'intéresse !'
JE telecharger_le_zip

Conclusion :


Sachant que tous les microprocesseurs ne sont pas aussi rapides que le mien, j'ai prévu une constante (elle s'appelle 'ttt') qui permet d'auguementer ou de réduire la vitesse du jeu. Modifiez-là si la vitesse ne vous convient pas.

Les missiles restent collés au plafond :( ... Le seul moyent que j'ai pour y remédier est de colorier en noir tous les pixels du plafond, mais cela ralentirai un peu le jeu... Sans parler de la taille du programme qui en prendrait un coup :(.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1 -
salut,

a part:
mov al,XXh
call PIXEL ; C

on peut trouver quoi et ou ?

@++
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13 -
MOV AH,0ch
INT 10h

Un zip entier de binaires pour n'y trouver qu'une série d'appels à ces 2 lignes asm... je ne vois pas l'intérêt pédagogique de cette source.
CS n'a pas d'accord Borland pour redistribuer TASM, faudra remettre un zip sans TASM.
cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1 -
re,

ca y est j'ai trouvé, tout est dans sou.asm

La fonction 0Bh de l'int 21h n'est pas a utiliser car elle garde en memoire toutes les repetitions di on maintient la touche enfoncée, ce qui fait que ton programme ne réagit au changement d'une touche que quand toutes les repetitions ont été traitées.

Ca devient donc assez injouable et j'ai vu le hamster me passer 3 fois devant le nez avant de pouvoir lancer ne serait-ce qu'un petit missile.

Pour le reste, je dois t'avouer que le graphisme en asm 16 bits par des suite de "call SetPixel" n'as pas pour moi un interêt visible.

@++
cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1 -
re,

voilà qui va permettre d'eliminer pas mal de fichier source,
de mettre tes sprites dans un fichier bin,
de faire faire un clin d'oeil a ton hamster quand on le rate sans recreer un autre fichier source,...

SPRITE STRUCT
tailleX WORD ?
tailleY WORD ?
bitmap DB 1 DUP(?)
SPRITE ENDS

VAISSO_SPRITE:
dw 12,5
db 00,00,00,00,00,07,07,00,00,00,00,00
db 00,00,00,00,07,15,15,07,00,00,00,00
db 00,00,00,07,15,15,15,15,07,00,00,00
db 00,00,07,15,15,15,15,15,15,07,00,00
db 00,00,07,15,07,00,00,07,15,07,00,00

OutSprite:;(x,y,SPRITE*)
push bp
mov bp,sp

push si ; bp-2
push di ; bp-4
push bx ; bp-6
cld ; direction +

mov cx,[bp+4] ; cx = x
mov dx,[bp+6] ; dx = y
mov si,[bp+8] ; si = sprite ptr

lodsw
push ax ; bp-8 = width
lodsw
push ax ; bp-10 = heigth

@1:
mov di,[bp-8] ; =width
@2:
lodsb
mov ah,0Ch
xor bx,bx
int 10h
inc cx
dec di
jne @2

inc dx
dec word ptr[bp-10]
mov cx,[bp+4]
jne @1

mov si,[bp-2]
mov di,[bp-4]
mov bx,[bp-6]

mov sp,bp
pop bp
ret 3*2


Main:
push offset VAISSO_SPRITE
push vaisseauY
push vaisseauX
call OutSprite
...

dans tout les cas, ce n'est pas la bonne maniere de gerer des sprites.

Meme si je n'apprecie pas ce bouquin, ( contient trop d'erreurs, rien sur le mode protégé ou presque bien qu'il date de 1996, ...) il a l'avantage de contenir un chapitre sur les sprites en mode reel:

La bible du PC 6( 500 balles quand meme a l'epoque fallait pas avoir le net )

@++
Choumoumou
Messages postés
162
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
17 novembre 2010
-
Salut Patatalo,

Merci pour ton commentaire, je dois reconnaître que tu as raison... Ça devient très difficile et très lourd de faire des paysages entiers avec ma technique... Je me disais bien qu'il y avait une manière de faire des sprites sous forme de tableaux, avec une routine qui affiche des pixels suivant ce tableau. Mais je n'ai pas la chance d'avoir "La bible du PC 6" avec les 500 balles qui vont avec ! (Même s'il est évident qu'il a baissé de prix depuis). J'ai appris l'assembleur tout seul, en regardant les sources de ce site, et avant que je pose celle ci, personne n'était là pour me dire que je merdait ici ou là. J'ai donc continué à faire des jeux de 50 Mo pour des paysages immenses... qui font ramer mon PC comme pas possible.

Merci beaucoup pour ce bout de code, il me sera extrêmement utile à l'avenir :D

BruNews> Je reconnais qu'il y a plus de "mov cx,... call PIXEL" que de véritable code. Mais rassure-toi, le code n'est pas dans les fichiers sprites, mais bien dans sou.asm.

les programmes Tasm et Tlink étant des freewares (donc en téléchargement libre et gratuit), je ne pense pas qu'il nécessite un accord pour les redistribuer, non ? Dans le doute, je préfère les enlever.

Bonnes Fêtes à tous
@+ !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.