PURE BASIC - Le Topic officiel
+8
grostonton
Urbinou
ShiningBZH
Tryphon
goux.m
jmg49
Capitaine
Shaoth
12 participants
Page 3 sur 12
Page 3 sur 12 • 1, 2, 3, 4 ... 10, 11, 12
Re: PURE BASIC - Le Topic officiel
Tu vas passer Dr toi
Bah j'ai 2 premieres question :
1. Rendu visuel
j'ai commencé 2 tests découverte en 320x240 et 640x400, mais le rendu visuel est un peu lissé/flou... comme avec BLITZ 3D d'ailleurs...
Avec d'autres langages j'ai un rendu pixel perfect qui est très beau, quelque soit la définition que j'utilise (des definitions virtuelles)
Tu as un conseil sur cet aspect ?
2eme question
J'ai créé un EXE test... Chez certains l'.EXE ne se lance pas.... serait ce aussi a cause de ces définitions batardes ?
Merci Dr Dobro
Bah j'ai 2 premieres question :
1. Rendu visuel
j'ai commencé 2 tests découverte en 320x240 et 640x400, mais le rendu visuel est un peu lissé/flou... comme avec BLITZ 3D d'ailleurs...
Avec d'autres langages j'ai un rendu pixel perfect qui est très beau, quelque soit la définition que j'utilise (des definitions virtuelles)
Tu as un conseil sur cet aspect ?
2eme question
J'ai créé un EXE test... Chez certains l'.EXE ne se lance pas.... serait ce aussi a cause de ces définitions batardes ?
Merci Dr Dobro
Re: PURE BASIC - Le Topic officiel
Le doc, utiliser des structures ?
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: PURE BASIC - Le Topic officiel
pour ce qui concerne la resolution (en mode Graphique )
en fait tout depend du sous system graphique que tu configures..
ça se configure dans l'ide , vu que j'utilise mon propre IDE (codé en Purebasic)
je ne sais plus ou ça se trouve dans les parametres de l'editeur officiel
de memoire, tu dois avoir un champ ou il te faut preciser "OpenGL" ou "Directx11"
ça devrai deja jouer ... pour ma part, je conseille au depart de coder en mode Fenetré Graphique ....(pour les jeux)
bon pour faire court en Purebasic on peut coder
--- en fenetre (type utilitaire Windows )
--- en Graphique mode fenetré c'est a dire que l'ecran est inclu dans une fenetre
cela permet d'avoir acces au evenement windows, et de rester compatible avec tout les systeme windows ...
--- en Graphique mode Screen (directx) la l'ecran prends toute la place et s'impose
pas de possibilité simple de sortir de ce mode, pour retourner sur le bureau
alors quen mode fenetré on peut !! (le mode fenetré graphique permet aussi d'etre en plein ecran bien sur , on peut virer les bordures de la fenetre ... :)
pour ton code, j'ai testé vite fait, tu as une erreur sur la creation des sprites ligne 83 "le Sprite spécifié n'est pas initialisé"
(typique de l'utilisation d'un numero de sprite, qui n'existe pas )
c'est bizarre que ça ne t'affiche pas l'erreur , peut etre que tu compile sans avoir activé le debugger ...
en fait tout depend du sous system graphique que tu configures..
ça se configure dans l'ide , vu que j'utilise mon propre IDE (codé en Purebasic)
je ne sais plus ou ça se trouve dans les parametres de l'editeur officiel
de memoire, tu dois avoir un champ ou il te faut preciser "OpenGL" ou "Directx11"
ça devrai deja jouer ... pour ma part, je conseille au depart de coder en mode Fenetré Graphique ....(pour les jeux)
bon pour faire court en Purebasic on peut coder
--- en fenetre (type utilitaire Windows )
--- en Graphique mode fenetré c'est a dire que l'ecran est inclu dans une fenetre
cela permet d'avoir acces au evenement windows, et de rester compatible avec tout les systeme windows ...
--- en Graphique mode Screen (directx) la l'ecran prends toute la place et s'impose
pas de possibilité simple de sortir de ce mode, pour retourner sur le bureau
alors quen mode fenetré on peut !! (le mode fenetré graphique permet aussi d'etre en plein ecran bien sur , on peut virer les bordures de la fenetre ... :)
pour ton code, j'ai testé vite fait, tu as une erreur sur la creation des sprites ligne 83 "le Sprite spécifié n'est pas initialisé"
(typique de l'utilisation d'un numero de sprite, qui n'existe pas )
c'est bizarre que ça ne t'affiche pas l'erreur , peut etre que tu compile sans avoir activé le debugger ...
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
Salut à tous, j'interviens pour ne rien dire d'intéressant comme toujours, mais pour ma part je possède la license purebasic depuis des lustres et pourtant on peut pas dire que j'ai fait grand chose avec. Juste par soutien à quelque chose qui me semblait valoir la peine. 80euros c'est pas rien c'est sûr, mais bon.
Re: PURE BASIC - Le Topic officiel
c'est 80 euro, mais avec support a VIE !!
c'est pas rien non plus ....
pas beaucoup de devloppeurs proposent cette option d'avoir un language suivi
que tu ne paye plus !! mais que tu obtiens quand meme toutes les mise a jours ..... a VIE
perso j'en profite depuis 2003
@DrFloyd :
je crois que il y a une details qu'il faut que tu sache a propos des sprite Purebasic
contrairement a d'autres langage les sprites Purebasic ne sont pas des objets !!
dans un language lambda, lorsque tu pose le sprite 1 a la coordonées 10,10
si tu utilise le sprite 1 plus tard, et que tu le pose a la coordonée 20,20 , le sprite "1"
va alors changer de place ....
en Purebasic c'est pas comme ça que ça marche
un sprite est une petite image
le sprite "1" pourra etre en coordonée 10,10 mais aussi en coordonées 20,20
ou meme encore n'importe ou ailleurs ...
l"index d'un sprite en Purebasic ne defini pas le sprite comme un objet
mais seulement comme un index d'image ....
voici un code (j'espere que la limitation lié au APi ne t'empechera pas de le lancer
qui montre qu'un meme numero de sprites peut etre a pleins d'endroit en meme temps
c'est pas rien non plus ....
pas beaucoup de devloppeurs proposent cette option d'avoir un language suivi
que tu ne paye plus !! mais que tu obtiens quand meme toutes les mise a jours ..... a VIE
perso j'en profite depuis 2003
@DrFloyd :
je crois que il y a une details qu'il faut que tu sache a propos des sprite Purebasic
contrairement a d'autres langage les sprites Purebasic ne sont pas des objets !!
dans un language lambda, lorsque tu pose le sprite 1 a la coordonées 10,10
si tu utilise le sprite 1 plus tard, et que tu le pose a la coordonée 20,20 , le sprite "1"
va alors changer de place ....
en Purebasic c'est pas comme ça que ça marche
un sprite est une petite image
le sprite "1" pourra etre en coordonée 10,10 mais aussi en coordonées 20,20
ou meme encore n'importe ou ailleurs ...
l"index d'un sprite en Purebasic ne defini pas le sprite comme un objet
mais seulement comme un index d'image ....
voici un code (j'espere que la limitation lié au APi ne t'empechera pas de le lancer
qui montre qu'un meme numero de sprites peut etre a pleins d'endroit en meme temps
- Code:
Structure sprite
x.l
y.l
vitesse.l
taille_x.l
taille_y.l
EndStructure
Enumeration
#sprite_fond
#sprite
EndEnumeration
nbr_sprite=1000
Dim sprite.sprite(nbr_sprite)
; Test
ExamineDesktops()
EcranX =DesktopWidth(0) ;GetSystemMetrics_(#SM_CXSCREEN)
EcranY = Desktopheight(0);GetSystemMetrics_(#SM_CYSCREEN)
InitSprite(): InitKeyboard()
;hwnd=OpenWindow(1,0,0,EcranX,EcranY,"test", #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget )
OpenScreen (EcranX,EcranY,32,"Test")
; *********** ce sprite sert a effacer le fond ! ****************************
CreateSprite(#sprite_fond,EcranX,EcranY)
StartDrawing(SpriteOutput(#sprite_fond))
Box(0,0,EcranX,EcranY,RGB(0,0,0))
StopDrawing()
; ***************************************************************************
; *********** dessine le sprite *****************
sprite(t)\taille_x=8
sprite(t)\taille_y=8
CreateSprite(#sprite, sprite(t)\taille_x, sprite(t)\taille_x) ; c'est la meme image qui est employé
; dessine le sprite
StartDrawing(SpriteOutput(#sprite))
Box( 0,0, sprite(t)\taille_x, sprite(t)\taille_y,RGB(255,166,56))
StopDrawing()
; *********** prepare les parametres de chaque sprite *****************
For t=0 To nbr_sprite
sprite(t)\x = Random(EcranX)+1
sprite(t)\y= Random(EcranY)+1
sprite(t)\vitesse=Random(4)+1
Next t
; ***************************************************************
Repeat
go= ElapsedMilliseconds()
DisplaySprite(#sprite_fond,0,0)
For t= 0 To nbr_sprite
DisplaySprite(#sprite,sprite(t)\x,sprite(t)\y) ; toujour la meme image qui est affiché
sprite(t)\x=sprite(t)\x+sprite(t)\vitesse
If sprite(t)\x>EcranX+(sprite(t)\vitesse *2)
sprite(t)\x=0-sprite(t)\vitesse
EndIf
Next t
FlipBuffers()
temps=ElapsedMilliseconds()-go
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
End
EndIf
; ClearScreen(0) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< voila retiré !
Delay(2)
ForEver
Dernière édition par Dobro le Lun 30 Sep 2019 - 22:29, édité 1 fois
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
Salut @Dobro !
Bienvenue dans la clinique.
Tu fais quoi avec le Basic Pure, tu codes des jeux ?
Tu peux partager ?
Bienvenue dans la clinique.
Tu fais quoi avec le Basic Pure, tu codes des jeux ?
Tu peux partager ?
Shaoth- Guéri miraculeux
- Nombre de messages : 2234
Age : 54
Localisation : 92
Date d'inscription : 05/04/2018
Re: PURE BASIC - Le Topic officiel
en fait, ... je ne code plus !
j'ai fait un burn out ...
j'ai pendant pleins , pleins d'années participé au forum Purebasic
j'en ai meme été l'un des principaux modérateur
j'avais la chance d'avoir du temps , je passais plus de 8 heures par jours sur le forum ..
puis... l'ambiance parfois se degrade , prise de bec , j'ai rendu mon tablier ..
j'ai aussi eu des soucis perso qui sont venu s'ajouter a tout ça ..
bref, j'ai un peut craqué.. je ne code plus.. mais je regarde de temps en temps l'evolution du forum ..
sinon a titre perso, j'ai fait un editeur de Code pour Purebasic (EPB) mais je ne peux plus assurer le suivi regulier... comme je l'ai dis, je ne code plus..
juste je m'amuse ...
http://michel.dobro.free.fr/STLINE/Files/Image/Images/images_download/EPB.gif
j'ai fait pleins de trucs, ça va d'un synthetiseur vocal a la façon "Maupiti ilsland"
(je l'avais fait en Dark Basic au depart )
en passant par un prog de creation d'Anaglyphes
des utilitaires variés (effaceur d'espace libre disque dur)
reparateur de fichier pour le demodulateur Aston
un interpreteur LOGO (PureGolo) , (evalué par le site de PapyLOGO ... )
un Casse Brique, meme plusieurs en fait ...
pfff. pleins de trucs en réalité , que je ne peut meme pas tout lister
un prg pour changer les couleurs de l'editeur AGK2...
un prg pour creer des peintures..
.... (ça ne me reviens pas tout LOL )
j'ai eu un probleme avec mon site, ce qui fait que je ne peut meme pas donner un lien vers une pages graphique qui affichais quelques screen de mes prg ...
bref, je me considere comme un bidouilleur :)
l'une de mes premiere apparition etait dans ST MAG 80 page 66/67 a propos d'un prg "Sphinx 4.0"
fait en GFa Basic 3.5 :)
je n'ai pas que la programmation comme hobby, je suis guitariste aussi (depuis 1977)
specialité : finger Picking
j'ai fait un burn out ...
j'ai pendant pleins , pleins d'années participé au forum Purebasic
j'en ai meme été l'un des principaux modérateur
j'avais la chance d'avoir du temps , je passais plus de 8 heures par jours sur le forum ..
puis... l'ambiance parfois se degrade , prise de bec , j'ai rendu mon tablier ..
j'ai aussi eu des soucis perso qui sont venu s'ajouter a tout ça ..
bref, j'ai un peut craqué.. je ne code plus.. mais je regarde de temps en temps l'evolution du forum ..
sinon a titre perso, j'ai fait un editeur de Code pour Purebasic (EPB) mais je ne peux plus assurer le suivi regulier... comme je l'ai dis, je ne code plus..
juste je m'amuse ...
http://michel.dobro.free.fr/STLINE/Files/Image/Images/images_download/EPB.gif
j'ai fait pleins de trucs, ça va d'un synthetiseur vocal a la façon "Maupiti ilsland"
(je l'avais fait en Dark Basic au depart )
en passant par un prog de creation d'Anaglyphes
des utilitaires variés (effaceur d'espace libre disque dur)
reparateur de fichier pour le demodulateur Aston
un interpreteur LOGO (PureGolo) , (evalué par le site de PapyLOGO ... )
un Casse Brique, meme plusieurs en fait ...
pfff. pleins de trucs en réalité , que je ne peut meme pas tout lister
un prg pour changer les couleurs de l'editeur AGK2...
un prg pour creer des peintures..
.... (ça ne me reviens pas tout LOL )
j'ai eu un probleme avec mon site, ce qui fait que je ne peut meme pas donner un lien vers une pages graphique qui affichais quelques screen de mes prg ...
bref, je me considere comme un bidouilleur :)
l'une de mes premiere apparition etait dans ST MAG 80 page 66/67 a propos d'un prg "Sphinx 4.0"
fait en GFa Basic 3.5 :)
je n'ai pas que la programmation comme hobby, je suis guitariste aussi (depuis 1977)
specialité : finger Picking
Dernière édition par Dobro le Lun 30 Sep 2019 - 23:12, édité 1 fois
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
oui j'ai bien saisi que les sprites sont avant tout des images.E toui, j' n'est pas activé le mode debug
j'en reviens au mode graphique en mode fenetre full screen (c'est effectivement ce que je veux faire car le vrai fullscreen Direct X c'est la merde, c'est chiant pour revenir sur le bureau), tu peux me donner le code correspondant ?
Perso j'ai tenté ça :
C'est ca un mode graphique fenetré ? Et ensuite je voudrai le passer en fullscreen sans aucun bord.
Tu seras alors mon Dieu Le Dieu Dobro Ier
j'en reviens au mode graphique en mode fenetre full screen (c'est effectivement ce que je veux faire car le vrai fullscreen Direct X c'est la merde, c'est chiant pour revenir sur le bureau), tu peux me donner le code correspondant ?
Perso j'ai tenté ça :
- Code:
; MODE FENETRE[size=12][/size]
OpenWindow(0,0,0,320,240,"COSMOS",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)[size=12][/size]
OpenWindowedScreen(WindowID(0), 0, 0, 320, 240)
C'est ca un mode graphique fenetré ? Et ensuite je voudrai le passer en fullscreen sans aucun bord.
Tu seras alors mon Dieu Le Dieu Dobro Ier
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
oui le mode windowedScreen est bien le mode ecran fenetré :)
pour virer les bordures d'une fenetre il faut utiliser la constante suivante
"
bien sur il te faudr virer "
et si tu vire
la on va arriver a la boucle des event qui sera de la forme
; ********** debut de boucle
Repeat
ExamineMouse() ; on demande a purebasic de surveiller les event de souris !
ExamineKeyboard() ; on demande a purebasic de surveiller les event de clavier!
evnt= waitWindowEvent(2)
Select evnt
Case #PB_Event_CloseWindow
End
EndSelect
Until KeyboardPushed(#PB_Key_Escape)
; **************** fin de boucle ************************
voila une boucle qui va gerer l'appuis sur la touche esc pour quitter le programme :)
pour virer les bordures d'une fenetre il faut utiliser la constante suivante
"
- Code:
#PB_Window_BorderLess"
bien sur il te faudr virer "
- Code:
#PB_Window_SystemMenu"
- Code:
OpenWindow(#Window_0, 366, EcranY, #SizeWindowX , #SizeWindowY,"New window ( 0 )",#PB_Window_BorderLess
et si tu vire
- Code:
#PB_Window_SystemMen
- Code:
tu vas perdre la petite croix blanche sur fond rouge , donc a toi de gerer une sortie possible
- Code:
en utilisant par exemple la touche ESC
la on va arriver a la boucle des event qui sera de la forme
; ********** debut de boucle
Repeat
ExamineMouse() ; on demande a purebasic de surveiller les event de souris !
ExamineKeyboard() ; on demande a purebasic de surveiller les event de clavier!
evnt= waitWindowEvent(2)
Select evnt
Case #PB_Event_CloseWindow
End
EndSelect
Until KeyboardPushed(#PB_Key_Escape)
; **************** fin de boucle ************************
voila une boucle qui va gerer l'appuis sur la touche esc pour quitter le programme :)
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
Je tente demain, je suis excité
Car le fullscreen ca me gonfle!!!!
Ca va p'etre en meme temps résoudre mon probleme de flou visuel
Car le fullscreen ca me gonfle!!!!
Ca va p'etre en meme temps résoudre mon probleme de flou visuel
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
pas de probleme, par contre je serai moins dispo a partir de demain
mais je jetterai un oeil ... :)
a++++
mais je jetterai un oeil ... :)
a++++
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
tu as droit à quelques jours de repos bien mérités...
(ST Magazine, j'ai adoré)
(ST Magazine, j'ai adoré)
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
tiens comme je suis trop cool , je te donne la solution
mais test avant par toi meme :)
on quitte le code ci dessous avec la touche ESC :) ça te fais une bonne base pour coder des jeux :)
mais test avant par toi meme :)
on quitte le code ci dessous avec la touche ESC :) ça te fais une bonne base pour coder des jeux :)
- Code:
#window = 0
Width = 900 ; <<<<<<<<< ici la resolution de la fenetre mais je vais redefinir ligne 9 donc ceci est la juste au cas ou on veux une rez precise
Height = 700
; mais si tu veux du plein ecran alors on interoge la resolution en cours
ExamineDesktops()
Width=DesktopWidth(0)
height=DesktopHeight(0) ; <<<<<<<< voila on connais la resoltuion
Enumeration
#Panel
#Cont
#Button
EndEnumeration
;- Initialisation de DirectX
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Erreur", "Impossible d'initialiser DirectX", 0)
CloseWindow(#window) : End
EndIf
;- Ouverture de la fenètre et de l'écran
hwnd = OpenWindow(#window, 0, 0, Width, Height, "",#PB_Window_BorderLess|#PB_Window_ScreenCentered) ;#PB_Window_TitleBar | #PB_Window_ScreenCentered|#PB_Window_SystemMenu )
;***********If CreateGadgetList(hwnd)
; ScrollAreaGadget(#Panel,10, 10,800,600, 1024, 768, 30)
; hCont = ContainerGadget(#Cont,10,10,1024,768,#PB_Container_Double)
OpenWindowedScreen(hwnd, 0, 0, Width, height, 0, 0, 0)
;***********EndIf
If CreateSprite(1000,24,24)
StartDrawing(SpriteOutput(1000))
Box(0,0,24,24,RGB($0,$0,$FF))
StopDrawing()
EndIf
Dep = 8
;- début de la boucle
Repeat
ExamineMouse() ; on demande a purebasic de surveiller les event de souris !
ExamineKeyboard() ; on demande a purebasic de surveiller les event de clavier!
evnt= WindowEvent()
Delay(2)
Select evnt
Case #PB_Event_CloseWindow
End
EndSelect
StartDrawing(ScreenOutput())
DrawText(10, 10, "touche ESC pour quitter" ,RGB(255,255,0),RGB(0,0,0))
StopDrawing()
FlipBuffers() : ClearScreen(RGB(0,0,0))
DisplaySprite(1000, x, 100)
;************** deplacement d'un sprte **************
x + Dep
If x >=Width Or x <=0 : Dep = -Dep : EndIf ; mouvement horizontle de notre sprite
; *************************************************
Until KeyboardPushed(#PB_Key_Escape)
;
; Epb
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
drfloyd a écrit:
Ca va p'etre en meme temps résoudre mon probleme de flou visuel
A mon avis, ton flou est inévitable si tu upscales une réso rétro en fullscreen dans ta résolution écran native.
Re: PURE BASIC - Le Topic officiel
bah avec Pure oui j'ai l'impression, comme avec BLITZ
Mais ca dépend des langages, en RC Basic ou NAALAA quoi que tu fasses en terme de reso, du 320x300 ou du 658x349, l'image est toujours nickelle et parfaite à l'affichage. C'est hyper surprenant, je ne sais pas comment ils font.
Mais ca dépend des langages, en RC Basic ou NAALAA quoi que tu fasses en terme de reso, du 320x300 ou du 658x349, l'image est toujours nickelle et parfaite à l'affichage. C'est hyper surprenant, je ne sais pas comment ils font.
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
drfloyd a écrit:bah avec Pure oui j'ai l'impression, comme avec BLITZ
Mais ca dépend des langages, en RC Basic ou NAALAA quoi que tu fasses en terme de reso, du 320x300 ou du 658x349, l'image est toujours nickelle et parfaite à l'affichage. C'est hyper surprenant, je ne sais pas comment ils font.
Oui c'est surprenant, parce qu'à la base c'est un souci physique. Tu dois extrapoler 480 points en 1080, soit 2.25 pixels physiques pour un pixel logique, et la même chose en horizontal. Les pixels intermédiaires sont calculés en faisant une moyenne des pixels adjacents, d'où le flou.
Re: PURE BASIC - Le Topic officiel
Oui je pige pas. Je vais recontacter l'auteur de RCBasic pour savoir comment il fait
Par exemple sur mon jeu SUPER STAR TREK 71 en RC BASIC l'image est nickelle de chez nickelle avoir que j'utilise des definitions graphiques hyper exotiques (genre 420 x 272 je crois)
Bon bien sur ici c'est une capture ca se voit pas
Par exemple sur mon jeu SUPER STAR TREK 71 en RC BASIC l'image est nickelle de chez nickelle avoir que j'utilise des definitions graphiques hyper exotiques (genre 420 x 272 je crois)
Bon bien sur ici c'est une capture ca se voit pas
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
dans le Purebasic la fonction
si il est a 1 lorsqu'on redimensionne la fenetre, les sprites sont zoomer
en principe pas de defaut si tu agrandis la fenetre ...
par contre si tu reduits , là l'effet "flou" risque d'apparaitre ...
lorsque je parle d'agrandir , je veux dire que si ton jeux se passe en 320x200
et que tu fait afficher tes sprites en 640x400 , le ratio est le meme , donc tu n'aura pas de defaut....
par contre si tu change le ratio , ça va "ecraser" ("rectangluariser") tes pixels carrés
donc tu aura probablement un effet bizarre par rapport au pixel du monitor....
d'ou le flou possible ....
rassure moi, tu a jetté ton monitor cathodique ?
- Code:
OpenWindowedScreen(hwnd, 0, 0, Width, height, zoom, 0, 0)
si il est a 1 lorsqu'on redimensionne la fenetre, les sprites sont zoomer
en principe pas de defaut si tu agrandis la fenetre ...
par contre si tu reduits , là l'effet "flou" risque d'apparaitre ...
lorsque je parle d'agrandir , je veux dire que si ton jeux se passe en 320x200
et que tu fait afficher tes sprites en 640x400 , le ratio est le meme , donc tu n'aura pas de defaut....
par contre si tu change le ratio , ça va "ecraser" ("rectangluariser") tes pixels carrés
donc tu aura probablement un effet bizarre par rapport au pixel du monitor....
d'ou le flou possible ....
rassure moi, tu a jetté ton monitor cathodique ?
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
Dobro a écrit:tiens comme je suis trop cool , je te donne la solution
mais test avant par toi meme :)
J'ai fait ça (pour une def 640,400) :
- Code:
ExamineDesktops()
OpenWindow(0, 0, 0, DesktopWidth(0), DesktopHeight(0), "",#PB_Window_BorderLess|#PB_Window_ScreenCentered) ;#PB_Window_TitleBar | #PB_Window_ScreenCentered|#PB_Window_SystemMenu
OpenWindowedScreen(WindowID(0), 0, 0, 640, 400, 1, 0, 0)
Et ca marche nickel !
Effet de flou inévitable par contre
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
Dobro a écrit:dans le Purebasic la fonctiona un parametre "zoom" auto ..
- Code:
OpenWindowedScreen(hwnd, 0, 0, Width, height, zoom, 0, 0)
si il est a 1 lorsqu'on redimensionne la fenetre, les sprites sont zoomer
en principe pas de defaut si tu agrandis la fenetre ...
par contre si tu reduits , là l'effet "flou" risque d'apparaitre ...
lorsque je parle d'agrandir , je veux dire que si ton jeux se passe en 320x200
et que tu fait afficher tes sprites en 640x400 , le ratio est le meme , donc tu n'aura pas de defaut....
par contre si tu change le ratio , ça va "ecraser" ("rectangluariser") tes pixels carrés
donc tu aura probablement un effet bizarre par rapport au pixel du monitor....
d'ou le flou possible ....
rassure moi, tu a jetté ton monitor cathodique ?
oui j'utilise le zoom auto, mais il ne fait pas genre un x2, il zoome sur la totalité de l'ecran, et donc le flou réapparait
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
oui tres bien
par contre .. evite au maximum la surcharge des fonctions .... bien sur que tu peux faire
mais c'est mieux de faire :
et c'est vachement plus lisible ... :)
ce que m'a appris le Purebasic et a lire les codes des "pro" c'est justement
de bien détailler, et d'eviter autant que faire ce peux les Surcharges de fonctions
car plus tard, on ne sais plus ou on en est ... :)
autre exemple
avant je codais aussi beaucoup avec les DIM
maintenant je ne les utilisent quasi plus ...
j'utilise bien plus souvent les Lists ou les lists Structurés....
c'est franchement bien plus conviviale ...
mais je ne desepere pas te convertir
par contre .. evite au maximum la surcharge des fonctions .... bien sur que tu peux faire
- Code:
OpenWindow(0, 0, 0, DesktopWidth(0), DesktopHeight(0), "",#PB_Window_BorderLess|#PB_Window_ScreenCentered)
mais c'est mieux de faire :
- Code:
examineDesktops()
largeur_ecran=DesktopWidth(0)
hauteur_ecran=DesktopHeight(0)OpenWindow(0, 0, 0, largeur_ecran, Hauteur_ecran, "",#PB_Window_BorderLess|#PB_Window_ScreenCentered)
et c'est vachement plus lisible ... :)
ce que m'a appris le Purebasic et a lire les codes des "pro" c'est justement
de bien détailler, et d'eviter autant que faire ce peux les Surcharges de fonctions
car plus tard, on ne sais plus ou on en est ... :)
autre exemple
avant je codais aussi beaucoup avec les DIM
maintenant je ne les utilisent quasi plus ...
j'utilise bien plus souvent les Lists ou les lists Structurés....
c'est franchement bien plus conviviale ...
mais je ne desepere pas te convertir
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
tu peux me donner un exemple de code simple
que je test vite fait ton histoire de zoom
parceque franchement, j'vais jamais remarqué ça
ou capture d'ecran qui montre le probleme ?
ps tu as quoi comme carte graph ??, tes drivers sont a jour ?
je pense que peut etre cela peut venir d'un probleme lié a un redimensionnement a la puissance 2 .... a voir
que je test vite fait ton histoire de zoom
parceque franchement, j'vais jamais remarqué ça
ou capture d'ecran qui montre le probleme ?
ps tu as quoi comme carte graph ??, tes drivers sont a jour ?
je pense que peut etre cela peut venir d'un probleme lié a un redimensionnement a la puissance 2 .... a voir
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
@drfloyd la capture de ton Star Trek donne envie !
On sent malgré tout un lien de parenté un peu trop fort avec Cosmos.
Va falloir y remédier
On sent malgré tout un lien de parenté un peu trop fort avec Cosmos.
Va falloir y remédier
Shaoth- Guéri miraculeux
- Nombre de messages : 2234
Age : 54
Localisation : 92
Date d'inscription : 05/04/2018
Re: PURE BASIC - Le Topic officiel
sinon pour ton probleme de "flou" il y a moyen de moyenner ...
c'est de forcer la resolution du monitor a ton prg ...
(en n'oubliant pas de revenir a la resolution de depart avant de quitter le prg)
parceque surfer sur internet en 640x400 ça va pas le faire LOL
le seul Hic, c'est qu'il faut disposer de la version complete de Purebasic
car l'astuce en question utilise les API windows ....
là c'est sur, plus de probleme de flou, puisque tu passes ton monitor a la resolution 640x400 ... apres faut faire attention que la carte Graph suporte la resolution en question ... et puis de bien remettre la résolution de depart avant de quitter le programme
ps: pas exclu que RC_basic fasse ceci en arriere plan au moment ou tu lance le code ...
c'est de forcer la resolution du monitor a ton prg ...
(en n'oubliant pas de revenir a la resolution de depart avant de quitter le prg)
parceque surfer sur internet en 640x400 ça va pas le faire LOL
le seul Hic, c'est qu'il faut disposer de la version complete de Purebasic
car l'astuce en question utilise les API windows ....
là c'est sur, plus de probleme de flou, puisque tu passes ton monitor a la resolution 640x400 ... apres faut faire attention que la carte Graph suporte la resolution en question ... et puis de bien remettre la résolution de depart avant de quitter le programme
ps: pas exclu que RC_basic fasse ceci en arriere plan au moment ou tu lance le code ...
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
ça ne changera rien, puisque ton écran possède physiquement 1080 pixels x 1920 dans le cas d'un full hd.Dobro a écrit:sinon pour ton probleme de "flou" il y a moyen de moyenner ...
c'est de forcer la resolution du monitor a ton prg ...
Re: PURE BASIC - Le Topic officiel
ben si, ça peut franchement améliorer
car changer la resolution de l'ecran c'est forcement utiliser une resolution
qui a été cablé par le createur de la carte Graph
donc, il ne s'agit plus d'un effet Zoom artificiel
mais bien du Driver carte Graph qui va gerer l'affichage ....
celui tiendra mieux compte du nombre de pixel du monitor et aussi de la frequence Vbl ...
c'est une resolution Cablé ...
le seul defaut, c'est qu'on est obligé de respecter les resolutions possibles du systeme en cours....
pas question d'utiliser une resolution exotique ...
tu as une version Full de Purebasic ?
car changer la resolution de l'ecran c'est forcement utiliser une resolution
qui a été cablé par le createur de la carte Graph
donc, il ne s'agit plus d'un effet Zoom artificiel
mais bien du Driver carte Graph qui va gerer l'affichage ....
celui tiendra mieux compte du nombre de pixel du monitor et aussi de la frequence Vbl ...
c'est une resolution Cablé ...
le seul defaut, c'est qu'on est obligé de respecter les resolutions possibles du systeme en cours....
pas question d'utiliser une resolution exotique ...
tu as une version Full de Purebasic ?
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
Dobro a écrit:
celui tiendra mieux compte du nombre de pixel du monitor et aussi de la frequence Vbl ...
c'est une resolution Cablé ...
Tu réfléchis cathodique
Tourne le comme tu veux, tu auras toujours des pixels physiques intermédaiires à interpoler.
Avec la CG l'interpolation sera peut-être une chouille plus précise, c'est tout.
Re: PURE BASIC - Le Topic officiel
Dobro a écrit:ben si, ça peut franchement améliorer
car changer la resolution de l'ecran c'est forcement utiliser une resolution
qui a été cablé par le createur de la carte Graph
donc, il ne s'agit plus d'un effet Zoom artificiel
mais bien du Driver carte Graph qui va gerer l'affichage ....
celui tiendra mieux compte du nombre de pixel du monitor et aussi de la frequence Vbl ...
c'est une resolution Cablé ...
le seul defaut, c'est qu'on est obligé de respecter les resolutions possibles du systeme en cours....
pas question d'utiliser une resolution exotique ...
tu as une version Full de Purebasic ?
je suis encore sur la version démo...
C'est drole le vrai fullscreen direct x a des effets differents selon les PC.... Sur 1 PC le 640x480 est top nickel (avec des bandes noires verticales de chaque coté, sur un autre avec le meme code ca donne du fullscreen degulasse). Et le mode windows plein ecran, le flou est plus ou moin prononcé selon le PC
Mai sje veux rester en mode fenetré plein ecran de toute façon. Et en fait en mode fenetré, je ne vroudrais pas zoomer l'image sur la totalité de l'ecran, là je comprend le flou que ca genere pour s'adapter à l'ecran, mais zoomer au ratio de 640x480 quitte à avoir des bandes noire verticales sur le coté.... l'option Zoom n'est pas parametrable, c'est 0 ou 1,
je sais pas si c'est possible de faire un zoom non automatique au bon ratio ?
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
je suis vraiment dans la galère avec PURE, en plus quand je crée un EXE tout part en vrille depuis mon mode fenetré fullscreen : l'ecran est trop zoomé (j'n vois 2/3) et la souris deconne totalement...
Je dois etre un boulet ?
Je dois etre un boulet ?
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
autre exemple de codage type jeux
avec gestion des touches flechées
sortie avec ESC :
une raquette et une "balle" plus qu'a tester ....
ps: pour ce que tu as ecris précedement, faire gaffe la gestion de la souris Windows
ne corresponde pas avec les coordonées DX ...
c'est pas la faute de Purebasic, c'est windows qui est ainsi fait ....
je te posterai un code qui montre comment faire
la encore , plusieurs solutions ,
utiliser les fonction native de purebasic, mais niveau souris... c'est plutot pour du mode Gadget windows ...
ou bien les APi qui interoge directement le systeme windows ... , là encore, les APIs sont quasi obligatoire
(donc la version complete de purebasic ...sorry )
tout depends si tu as besoin d'un pointage exacte avec la souris, ou juste savoir qu'elle se deplace et vers ou
le code ci dessous utilise seulement les touches flechées
tu verra que j'aime bien les Goto :)
ps ce code ne dois pas etre de moi.... ha ben si ... LOL
avec gestion des touches flechées
sortie avec ESC :
une raquette et une "balle" plus qu'a tester ....
ps: pour ce que tu as ecris précedement, faire gaffe la gestion de la souris Windows
ne corresponde pas avec les coordonées DX ...
c'est pas la faute de Purebasic, c'est windows qui est ainsi fait ....
je te posterai un code qui montre comment faire
la encore , plusieurs solutions ,
utiliser les fonction native de purebasic, mais niveau souris... c'est plutot pour du mode Gadget windows ...
ou bien les APi qui interoge directement le systeme windows ... , là encore, les APIs sont quasi obligatoire
(donc la version complete de purebasic ...sorry )
tout depends si tu as besoin d'un pointage exacte avec la souris, ou juste savoir qu'elle se deplace et vers ou
le code ci dessous utilise seulement les touches flechées
tu verra que j'aime bien les Goto :)
ps ce code ne dois pas etre de moi.... ha ben si ... LOL
- Code:
Declare Sprites()
#Window = 0
ExamineDesktops()
Width=DesktopWidth(0)
height=DesktopHeight(0)
Enumeration
#brique
#balle
EndEnumeration
Global xbrique,ybrique,xpas,ypas,xb,yb,flag
dep = 10
;- Initialisation de DirectX
If InitSprite() = 0 Or InitKeyboard() = 0
End
EndIf
;- Ouverture de la fenêtre et de l'écran
hwnd = OpenWindow(#Window, 0, 0, Width, Height,"", #PB_Window_BorderLess| #PB_Window_ScreenCentered)
OpenWindowedScreen(hwnd, 0, 0, Width, Height, 1, 0, 0)
Sprites()
;- Initialisation des sprites
xbrique = 86 : ybrique = 138
xb= 0 : yb= 0
xpas = 5 : ypas = 5
;- Boucle des évènements
Repeat
ClearScreen(rgb(0, 0, 0)) : ExamineKeyboard()
; Affichage des sprites
DisplayTransparentSprite(#brique, xbrique, ybrique)
DisplayTransparentSprite(#balle, xb, yb)
FlipBuffers()
xb=xb + xpas
yb=yb + ypas
If SpritePixelCollision(#balle, xb, yb, #brique, xbrique-5, ybrique)<>0 And flag=0
flag=1
SetWindowTitle(#window ,"Collision à gauche")
xpas=-xpas
Goto su ; sort du test !!!
EndIf
If SpritePixelCollision(#balle, xb, yb, #brique, xbrique+5, ybrique)<>0 And flag=0
flag=1
SetWindowTitle(#window,"Collision à droite")
xpas=-xpas
Goto su ; sort du test !!!
EndIf
If SpritePixelCollision(#balle, xb, yb, #brique, xbrique, ybrique-5)<>0 And flag=0
flag=1
SetWindowTitle(#window,"Collision au dessus")
ypas=-ypas
Goto su ; sort du test !!!
EndIf
If SpritePixelCollision(#balle, xb, yb, #brique, xbrique, ybrique+5)<>0 And flag=0
flag=1
SetWindowTitle(#window,"Collision au dessous")
ypas=-ypas
Goto su ; sort du test !!!
EndIf
su: ; <<<<<<<<<<<<<<< -------------------- sortie du test
If flag=1
attente+1
EndIf
If attente>4
attente=0
flag=0
EndIf
;Delay(2)
If KeyboardPushed(#PB_Key_Escape) : quit = 1 : EndIf
If KeyboardPushed(#PB_Key_Left) : xbrique - dep : EndIf
If KeyboardPushed(#PB_Key_Right) : xbrique + dep : EndIf
If KeyboardPushed(#PB_Key_Up) : ybrique - dep : EndIf
If KeyboardPushed(#PB_Key_Down) : ybrique + dep : EndIf
If xb <=0 : xpas= -xpas : EndIf
If yb <=0 : ypas= -ypas : EndIf
If xb >=Width : xpas= -xpas : EndIf
If yb >=height : ypas= -ypas : EndIf
While WindowEvent() : Wend
Until quit = 1
;
;******************* procedures Zone *****************************************
Procedure Sprites()
; Procedure de création des sprites
If CreateSprite(#brique,128,24,#PB_Sprite_PixelCollision) ; Sprite Fixe
StartDrawing(SpriteOutput(#brique))
Box(0,0,128,24,RGB($FF,$0,$0))
StopDrawing()
EndIf
If CreateSprite(#balle,20,20,#PB_Sprite_PixelCollision) ; Sprite Mobile
StartDrawing(SpriteOutput(#balle))
Circle(10,10,10,RGB($0,$0,$FF))
StopDrawing()
EndIf
EndProcedure
; Epb
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
et voici la version "souris"
il faut bouger la souris... etonnant non ?
il faut bouger la souris... etonnant non ?
- Code:
Declare Sprites()
#Window = 0
ExamineDesktops()
Width=DesktopWidth(0)
height=DesktopHeight(0)
Enumeration
#brique
#balle
EndEnumeration
Global xbrique,ybrique,xpas,ypas,xb,yb,flag
dep = 10
;- Initialisation de DirectX
InitMouse()
If InitSprite() = 0 Or InitKeyboard() = 0
End
EndIf
;- Ouverture de la fenêtre et de l'écran
hwnd = OpenWindow(#Window, 0, 0, Width, Height,"", #PB_Window_BorderLess| #PB_Window_ScreenCentered)
OpenWindowedScreen(hwnd, 0, 0, Width, Height, 1, 0, 0)
Sprites()
;- Initialisation des sprites
xbrique = 86 : ybrique = 138
xb= 0 : yb= 0
xpas = 5 : ypas = 5
;- Boucle des évènements
Repeat
ClearScreen(rgb(0, 0, 0)) : ExamineKeyboard()
ExamineMouse()
xm=mousex()
ym=mousey()
if xm<0
xm=0
endif
if xm>width
wm=width
endif
if ym<0
ym=0
endif
if ym>height
ym=height
Endif
; Affichage des sprites
DisplayTransparentSprite(#brique, xbrique, ybrique)
DisplayTransparentSprite(#balle, xb, yb)
FlipBuffers()
xb=xb + xpas
yb=yb + ypas
If SpritePixelCollision(#balle, xb, yb, #brique, xbrique-5, ybrique)<>0 And flag=0
flag=1
SetWindowTitle(#window ,"Collision à gauche")
xpas=-xpas
Goto su ; sort du test !!!
EndIf
If SpritePixelCollision(#balle, xb, yb, #brique, xbrique+5, ybrique)<>0 And flag=0
flag=1
SetWindowTitle(#window,"Collision à droite")
xpas=-xpas
Goto su ; sort du test !!!
EndIf
If SpritePixelCollision(#balle, xb, yb, #brique, xbrique, ybrique-5)<>0 And flag=0
flag=1
SetWindowTitle(#window,"Collision au dessus")
ypas=-ypas
Goto su ; sort du test !!!
EndIf
If SpritePixelCollision(#balle, xb, yb, #brique, xbrique, ybrique+5)<>0 And flag=0
flag=1
SetWindowTitle(#window,"Collision au dessous")
ypas=-ypas
Goto su ; sort du test !!!
EndIf
su: ; <<<<<<<<<<<<<<< -------------------- sortie du test
If flag=1
attente+1
EndIf
If attente>4
attente=0
flag=0
EndIf
;Delay(2)
;
If KeyboardPushed(#PB_Key_Escape) : quit = 1 : EndIf
; If KeyboardPushed(#PB_Key_Left) : xbrique - dep : EndIf
; If KeyboardPushed(#PB_Key_Right) : xbrique + dep : EndIf
; If KeyboardPushed(#PB_Key_Up) : ybrique - dep : EndIf
; If KeyboardPushed(#PB_Key_Down) : ybrique + dep : EndIf
xbrique=xm
ybrique=ym
If xb <=0 : xpas= -xpas : EndIf
If yb <=0 : ypas= -ypas : EndIf
If xb >=Width : xpas= -xpas : EndIf
If yb >=height : ypas= -ypas : EndIf
While WindowEvent() : Wend
Until quit = 1
;
;******************* procedures Zone *****************************************
Procedure Sprites()
; Procedure de création des sprites
If CreateSprite(#brique,128,24,#PB_Sprite_PixelCollision) ; Sprite Fixe
StartDrawing(SpriteOutput(#brique))
Box(0,0,128,24,RGB($FF,$0,$0))
StopDrawing()
EndIf
If CreateSprite(#balle,20,20,#PB_Sprite_PixelCollision) ; Sprite Mobile
StartDrawing(SpriteOutput(#balle))
Circle(10,10,10,RGB($0,$0,$FF))
StopDrawing()
EndIf
EndProcedure
; Epb
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Page 3 sur 12 • 1, 2, 3, 4 ... 10, 11, 12
Sujets similaires
» [BASIC QB64] le topic officiel du meilleur basic au monde ?
» [BLITZ BASIC] le topic officiel du meilleur basic au monde ?
» GOG le topic officiel
» The Last of Us 2 - Topic officiel
» [GTA V] le topic officiel
» [BLITZ BASIC] le topic officiel du meilleur basic au monde ?
» GOG le topic officiel
» The Last of Us 2 - Topic officiel
» [GTA V] le topic officiel
Page 3 sur 12
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum