π
<-
Chat plein-écran
[^]

JEU: MetroSiberia un tunnel pas comme les autres

Assembleur, Axe, C/C++, ICE...

Re: JEU: MetroSiberia un tunnel pas comme les autres

Message non lude matref » 08 Fév 2015, 19:55

C'est ça oui, ou bien juste CLine(X1,Y1,X2,Y2). Attention par contre, ça détruit plusieurs variables lettres, dont A jusqu'à F et Z et thêta si je me rappelle bien. Au pire regarde le code :P

Et ne t'inquiètes pas, c'est assez rapide x)
Avatar de l’utilisateur
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 25%
 
Messages: 506
Inscription: 11 Déc 2011, 03:08
Localisation: France, Châteaurenard
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Prépa MPSI

Re: JEU: MetroSiberia un tunnel pas comme les autres

Message non lude Plokki » 08 Fév 2015, 20:34

oui ça utilise pas mal de variables, le plus long va être d'adapter en les changeant: en l'occurrence j'utilise déjà Z,theta,R1,R2,R3,R4 mais ça devrait pas être trop difficile, en tout cas merci :)
Avatar de l’utilisateur
Plokki
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 40.6%
 
Messages: 124
Inscription: 02 Sep 2014, 15:15
Localisation: Près de... ah bah non !
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: T°S-spé math

Re: JEU: MetroSiberia un tunnel pas comme les autres

Message non lude Plokki » 09 Fév 2015, 16:51

C'était marrant.
En fait au début je me suis contenté de faire un copié/collé en changeant les variables mais ça marchait pas, les lignes qui avait un point inférieur à zéro buggaient alors je me suis dit que j'avais fait une erreur. Comme j'ai eu la flemme de la chercher j'ai préféré faire ma propre routine mais... toujours le même problème ! Jusqu'à ce que je me rende compte que c'était exactement la même chose que dans mon moteur 3d: j'utilisais un nombre d'un octet comme un nombre de deux octets. :@
Donc j'ai corrigé avec la commande signed{ (merci hayleia) et ça marche nickel. Je ne sais pas si ma routine et plus rapide que la tienne mais je n'utilise que 6 variables :p


Code: Tout sélectionner
Lbl CLINE

For(I,0,1)
If G<<0
-E*(H-F)//(G-E)+F→H
0→G
End
If H<<0
-F*(G-E)//(H-F)+E→G
0→H
End
If G>>93
(93-E)*(H-F)//(G-E)+F→H
93→G
End
If H>>63
(63-F)*(G-E)//(H-F)+E→G
63→H
End
G→D
E→G
D→E

H→D
F→H
D→F
End

ILine(E,F,G,H)

Return
Avatar de l’utilisateur
Plokki
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 40.6%
 
Messages: 124
Inscription: 02 Sep 2014, 15:15
Localisation: Près de... ah bah non !
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: T°S-spé math

Re: JEU: MetroSiberia un tunnel pas comme les autres

Message non lude Wistaro » 09 Fév 2015, 18:01

Très beau jeu!
Nouveau sur le site, Anonymous ? Avant de poster sur le chat et sur le forum, n'oublie pas de lire les règles. En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:
Image
Découvre mes programmes et mon site!
Avatar de l’utilisateur
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 87.5%
 
Messages: 3153
Images: 37
Inscription: 25 Fév 2013, 16:21
Localisation: Toulouse
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingénieur en électronique
YouTube: Wistaro
Twitter/X: Wistaro
GitHub: Wistaro

Re: JEU: MetroSiberia un tunnel pas comme les autres

Message non lude Plokki » 14 Mar 2015, 16:16

Salut, le jeu est presque fini !
J'ai ajouté plusieurs fonctionnalités comme les checkpoints, les changeurs de gravité et de vitesse avec en plus des bandeaux pour annoncer le nom des zones dans lesquelles on arrive (c'est plutôt mineur donc je met pas de screen). Du coup j'en suis à créer la map et les menus, ce qui prendra du temps. Je compte aussi ajouter plusieurs traînées différentes déblocables au fur et à mesure de la complétion du jeu pour faire un peu comme dans fruit ninja avec les sabres.
Comme d'hab je poste le code source du jeu pour qu'une âme charitable 0:] puisse corriger les horreurs que contient mon prog. Je l'aurais bien indenté mais je sais pas comment on fait :(

Code: Tout sélectionner
  .A
DiagnosticOff
Fix 5

.TRAINEE
.CARREE
[FE8282828282FE00]→Pic0
[007C4444447C0000]
[0000382838000000]
[0000001000000000]

.RONDE
[7C82828282827C00]
[0038444444380000]
[0000102810000000]
[0000001000000000]

.GATE
[FFFFE7C300000000]→Pic1GATE
[0000183CFFFFFFFF]

.GPICD
[7E7E7E7E7E7E3C18]→Pic1
.GPICM
[183C7E7E7E7E7E7E]

.PICD
[FFFF7E7E3C180000]→Pic2
.PICM
[0000183C7E7EFFFF]


.TITRE
"DEBUT"[00]→Str1
"SLOW NORMAL"[00]
"NORMAL"[00]
"FAST NORMAL"[00]
"SEMOULE NORMALE"[00]
"SLOW INVERTED"[00]
"NORMAL INVERTED"[00]
"FAST INVERTED"[00]
"SEMOULE INVERTED"[00]


.SARCASME
"BEN ALORS ?"[00]→Str2
"TU L AS PAS VU LE MUR ?"[00]
"CA A QUEL GOUT LE SOL ?"[00]
"DEJA LA ?"[00]
"IL MANQUE JUSTE LE TALENT"[00]
"UN SI BEAU VAISSEAU ᵀᵀ"[00]
"ON A EVITE LA CATASTROPHE…"[00]
"PRESQUE MORT !"[00]
"JAIMERAI PAS ETRE A TA PLACE"[00]
"UN JOUR, PEUT-ETRE…"[00]
"UN SEUL BOUTON C EST TROP ?"[00]
"TU DEVRAIS REUSSIR A FORCE !"[00]
"LE RIDICULE NE TUE PAS"[00]
"JE RECONNAIS TA DEFAITE"[00]
"UNE VIE SI COURTE…"[00]


Data(15,15)→GDB1
[004000A00120022004200820102021201820062001A00060000000000000]

Data(15,15)
[00000000003800C803081C101010092004200240014000C0000000000000]

Data(15,15)
[00000000000000001FFC1002080409080410042002400280010000000000]

Data(15,15)
[0000000000000C000B800870080C0902080C08700B800C00000000000000]

Data(15,15)
[00000000010002800240042004100908080410021FFC0000000000000000]

Data(15,15)
[00000000000000C0014002400420092010101C10030800C8003800000000]

Data(15,15)
[000000000000006001A00620182021201020082004200220012000A00040]

.PIXEL-TEST
Data(2,9,10,3,12,9,3,14,7,4,14,4,7,14,3,9,3,12,10,2,9)→GDB2X
Data(7,0,11,5,2,11,4,5,12,3,7,11,2,9,10,3,9,12,3,7,14)→GDB2Y

Data(1,⁻4,3,2,⁻4,3,3,⁻4,2,1,⁻7,3,1,4,3,2,4,3,3,4,2,1,7,3)→GDB1GRAV

L₁+700→°MAP
L₁+702→°PIC
L₁+698→°VHORIZ
.VITESSE HORIZONTALE
L₁+696→°NORI
.NOMBRE ORIENTATIONS
L₁+694→°XMAP
L₁+692→°YMAP
L₁+690→°TIME
L₁+688→°ROTA
L₁+686→°FLAG
L₁+684→°GRAV
L₁+682→°AREA
L₁+680→°PUB


GetCalc("appvMAPMETRO")→MAP
GetCalc("appvPICS")→PIC

0→P→Z→Q→X→FLAG→TIME→AREA

0
sub(TITRE)

70→θ
⁻4→GRAV
2→VHORIZ
3→NORI
64→PUB
25→Y
{MAP}ʳ→XMAP
{MAP+2}ʳ→YMAP
YMAP-8*4→U
.U:NMAX SCROLLING CAMERA
.Z:VAR SCROLLING CAMERA

Lbl DEBUT

Repeat getKey(15)

TIME++
TIME-64??0→TIME

X/8+12≥XMAP?0→X
X+VHORIZ→X

NORI-getKey(50)+getKey(49)→NORI
NORI+1??→NORI
NORI-4??+3→NORI
GRAV-getKey(53)+getKey(52)→GRAV

VHORIZ-getKey(48)+getKey(54)→VHORIZ
VHORIZ-5??+4→VHORIZ
VHORIZ+1??→VHORIZ

getKey(4)?GRAV*2+θ→θ
θ-GRAV→θ

θ+1>>0??→θ
NORI*2+1*20-1→r₁<θ?r₁→θ


If abs(Y-25)<2
θ/20-NORI+Z→Z
Z>>U?U→Z
Z<<⁻U?⁻U→Z
End
If abs(Z)=U
θ/20-NORI+Y→Y
End


Lbl MAP
X/8*YMAP+MAP+4+(Z+U/8)→r₁
⁻(Z^8)→r₂
⁻(X^8)→r₄
For(V,0,13)
For(W,0,9)
If {r₁+W}<105
Pt-On(r₄,r₂,{r₁+W}*8+PIC)
Else
!If {r₁+W}-105
TIME*4→ROTA
10→A
sub(RECT)
Else!If -1
⁻TIME*4→ROTA
10→A
sub(RECT)
Else!If -1
TIME*4→ROTA
32→A
sub(RECT)
Else!If -1
sub(GATE)
Else!If -1
r₂-abs(r₄+15^40-20)→A
sub(GPICD)
Else!If -1
r₂+abs(r₄+15^40-20)→A
sub(GPICM)
Else!If -1
sub(PICD)
Else!If -1
sub(PICM)
Else
-1→A
If r₁+W-4-MAP/YMAP=(X/8+4) and (PUB+1<48)
X→FLAG
AREA++
64→PUB

sign{A*3+GDB1GRAV}→VHORIZ
sign{A*3+GDB1GRAV+1}→GRAV
sign{A*3+GDB1GRAV+2}→NORI

0
sub(TITRE)
End

End
End
r₂+8→r₂
End
r₂-80→r₂
r₄+8→r₄
YMAP+r₁→r₁
End


θ/20-NORI+3→r₁
Bitmap(25,Y,r₁*32+GDB1,L₆,1)


Lbl TEST
r₁*3→r₂
0→r₄
For(r₁,r₂,r₂+2)
r₄+pxl-Test({GDB2X+r₁}+25,{GDB2Y+r₁}+Y)→r₄
End
If (r₄-3)
For(V,0,50)
Pxl-On(rand^14+25,rand^14+Y)
Pxl-Off(rand^14+25,rand^14+Y)
DispGraph
End
FLAG→X
0→TIME
25→Y
0→Z
70→θ
64→PUB
1
sub(TITRE)

End


Lbl CARRE

!If TIME^3
Copy(L₁,L₃,18)
Copy(L₃,L₁+1,18)
X+4→{L₁}
Y+Z+4→{L₁+6}
0→{L₁+12}
End
L₁+1→W
For(V,0,4)
TIME^5??{W+12}++
Pt-On({W}+25-X,{W+6}-Z,{W+12}*8+Pic0)
W++
End


Lbl PUB

If (1+PUB)
33-abs(PUB-32)→r₁<8?r₁,8
→r₁
Copy(8-r₁*12+L₁+200,L₆,r₁*12)
PUB--
End



DispGraphClrDraw

End
Lbl END

Fix 4
Return

Lbl TITRE
→A

StorePic
Rect(0,0,96,8)
RectI(1,0,94,7)
If A
Text(2,0,stdDev(Str2,rand^15))
Else
Text(2,0,"AREA")
Text(19,0,AREA►Dec)
Text(28,0,stdDev(Str1,AREA^9))
End
Copy(L₆,L₁+200,96)
RecallPic
Return

Lbl RECT
128-A→B
16→C

cos(ROTA+A)*C//127→{L₃}
sin(ROTA+A)*C//127→{L₂}

cos(ROTA-A)*C//127→{L₃+1}
sin(ROTA-A)*C//127→{L₂+1}


cos(ROTA-B)*C//127→{L₃+2}
sin(ROTA-B)*C//127→{L₂+2}

cos(ROTA+B)*C//127→{L₃+3}
sin(ROTA+B)*C//127→{L₂+3}

For(A,0,3)
sign{L₃+A}+r₄+4→E
sign{L₂+A}+r₂+4→F
A+1^4→B
sign{L₃+B}+r₄+4→G
sign{L₂+B}+r₂+4→H
sub(CLINE)
End

Return

Lbl GATE
If r₄<60
r₂+(60-r₄/2)→A
r₂-(60-r₄/2)→B
Else
r₂→B→A
End

Rect(r₄,0,8,64)

If A-B>>0
WRect(r₄,B,8,A-B)
End
Pt-On(r₄,B,Pic1GATE)
Pt-On(r₄,A-8,Pic1GATE+8)

Return

Lbl GPICD
If A>>0
Rect(r₄+1,0,6,A)
End
Pt-On(r₄,A,Pic1)
Return

Lbl GPICM
If A<56
Rect(r₄+1,A+8,6,56-A)
End
Pt-On(r₄,A,Pic1+8)
Return

Lbl PICD
If r₄<60
r₂+(60-r₄/2)→A
Else
r₂→A
End
Pt-On(r₄,A,Pic1)

Return

Lbl PICM
If r₄<60
r₂-(60-r₄/2)→A
Else
r₂→A
End
Pt-On(r₄,A,Pic1+8)
Return

Lbl CLINE

For(I,0,1)
If G<<0
⁻E*(H-F)//(G-E)+F→H
0→G
End
If H<<0
⁻F*(G-E)//(H-F)+E→G
0→H
End
If G>>93
(93-E)*(H-F)//(G-E)+F→H
93→G
End
If H>>63
(63-F)*(G-E)//(H-F)+E→G
63→H
End
G→D
E→G
D→E

H→D
F→H
D→F
End

Line(E,F,G,H)


Sinon, j'aurais besoin d'une précision au sujet des fichiers: c'est juste une lecture de l'archive ou bien ça fait une copie dans la ram ? parce que mine de rien le prog fait déjà 5000 octets plus les 1000 octets des tiles alors avec 12 000 octets de map ça laisse pas trop de marge.
J'aimerais aussi savoir s'il existe un utilitaire PC pour scanner une tile map et la convertir en une image pour me permettre de voir ma map dans sa globalité. Merci d'avance ;)
Avatar de l’utilisateur
Plokki
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 40.6%
 
Messages: 124
Inscription: 02 Sep 2014, 15:15
Localisation: Près de... ah bah non !
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: T°S-spé math

Re: JEU: MetroSiberia un tunnel pas comme les autres

Message non lude Plokki » 19 Avr 2015, 18:53

Bonjour, j'ai pas mal avancé dans la création de la map malgré 2 crash de ma calto qui m'ont obligé à recommencer car je n'avais pas sauvegardé :'(
J'ai également fait un menu digne de ce nom avec la possibilité de choisir plusieurs trainées pour le vaisseau avec un système de checkpoints fonctionnel. On peut aussi voir les bandeaux annonçant le nom de la zone (buggés :D ) et d'autres qui se moquent de vous.

MetroSiberia menu.gif
MetroSiberia menu.gif (647.54 Kio) Vu 2088 fois


Pour ne pas avoir à archiver/désarchiver mes appvars je me suis tourné vers les fichiers mais j'ai cru comprendre qu'on ne peut pas les utiliser comme pointeurs dans les commandes pt-on( et autres. Je voudrais donc intégrer directement mes deux appvars (la map et les tiles) à l'exécutable de mon programme sous forme de datas un peu comme on intégrerait un sous-programme ou un axiom. Je ne sais pas si c'est faisable mais j'imagine quelque chose comme ça: "appvarMAP"→GDB0

Quelqu'un peu m'aider ?
Avatar de l’utilisateur
Plokki
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 40.6%
 
Messages: 124
Inscription: 02 Sep 2014, 15:15
Localisation: Près de... ah bah non !
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: T°S-spé math

Re: JEU: MetroSiberia un tunnel pas comme les autres

Message non lude matref » 19 Avr 2015, 21:26

Wow ça a l'air énorme :D

Je vois ce que tu veux dire, mais on peut faire ça qu'avec les Pic malheureusement. Pourquoi tu les laisses pas désarchivées ? Elles seront pas moins protégées que si tu les mets dans le programme.
Avatar de l’utilisateur
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 25%
 
Messages: 506
Inscription: 11 Déc 2011, 03:08
Localisation: France, Châteaurenard
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Prépa MPSI

Re: JEU: MetroSiberia un tunnel pas comme les autres

Message non lude Plokki » 19 Avr 2015, 21:39

Merci ^^

L'intérêt de faire une lecture depuis l'archive ou de les mettre dans le programme est avantageux dans le cas de mirage os (que j'utilise).
ça permet de lancer les programmes même quand ils sont archivés, et comme ça tu n'utilises pas la ram en permanence ou tu ne sollicites pas l'archivage ce qui permet d'eviter les garbage collect. Et comme je programme en axe de manière pas toujours intelligente ma calculatrice et très souvent soumise à des ram clear, ce qui ne pose pas de problème tant que mes appvar sont archivées :)
Avatar de l’utilisateur
Plokki
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 40.6%
 
Messages: 124
Inscription: 02 Sep 2014, 15:15
Localisation: Près de... ah bah non !
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: T°S-spé math

Re: JEU: MetroSiberia un tunnel pas comme les autres

Message non lude TheMachine02 » 20 Avr 2015, 08:03

Première chose, j'adore ce screen :D
Après, d'abord, on peut inclure des appv dans le code avec [appvTOTO] (ben matref qu'est-ce qui t'arrive ? :p ) Mais, c'est peut-être pas la meilleur façon de faire (gros programme, tout ça tout ça). Après tu peux peut-être garder les appv en archive, créer un fichier, et copier l'appv dans une varible temporaire (avec le w au début), qui sera automatiquement détruite à la fin. Comme ça au moins, ben on utilise juste la RAM quand on lance le programme. Mais si tu veux utiliser mirageOS de manière permanente, ben moi je dis absorbe :p Faut juste faire gaffe qu'une modif de la map changera possiblement définitivement les datas (pour l'utilisateur)
Avatar de l’utilisateur
TheMachine02Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 29.4%
 
Messages: 341
Images: 0
Inscription: 16 Jan 2013, 18:27
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Médecine

Re: JEU: MetroSiberia un tunnel pas comme les autres

Message non lude Plokki » 20 Avr 2015, 11:21

Génial ! En fait je pense que je vais faire les deux. Je m'explique:
Vu que j'utilise un éditeur de tilemap, mes tiles sont dans une appvar externe utilisée à la fois par le prog et l'éditeur. Quand la map sera finie je n'aurais plus qu'à l'intégrer. (je viens de tester ça marche nickel :D )
Par contre faut que tu m'aides un peu pour la suite: C'est quoi une variable temporaire ? Je crée une autre appvar que je supprime après ?
on peut utiliser copy( avec les fichiers ? Je ferais donc:

Getcalc("appvarMAPMETRO",Y0)
Copy(Y0,VariableTemporaire,LaTailleDeMonAppvar)
Avatar de l’utilisateur
Plokki
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 40.6%
 
Messages: 124
Inscription: 02 Sep 2014, 15:15
Localisation: Près de... ah bah non !
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: T°S-spé math

PrécédenteSuivante

Retourner vers Langages alternatifs

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 10 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1049 utilisateurs:
>1025 invités
>19 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)