Author |
Topic: Example program challenge (Read 3993 times) |
|
hellomike
Junior Member
member is offline


Gender: 
Posts: 55
|
 |
Re: Example program challenge
« Reply #4 on: Jan 16th, 2017, 2:52pm » |
|
Hi Richard,
Yesterday I added the BB4W version for the 2048 game Rosetta task. See: http://rosettacode.org/wiki/2048
It's a very rudiment implementation. Just enough to meet the requirements of the task. For example, I didn't adopt the recommended naming conventions, used local variables, added any comments or provided help for the user.
If you agree with the quality level, I could upgrade with a visually more attractive interface, add comments etc and then it would be an honor to donate it as an example game.
Just let me know.
Regards,
Mike
|
|
Logged
|
|
|
|
Richard Russell
Administrator
member is offline


Posts: 803
|
 |
Re: Example program challenge
« Reply #5 on: Jan 16th, 2017, 8:50pm » |
|
on Jan 16th, 2017, 2:52pm, hellomike wrote:| If you agree with the quality level, I could upgrade with a visually more attractive interface, add comments etc |
|
You only need to look at the existing example programs to appreciate that the code quality is highly variable: many of them are poor from that point of view. So I wouldn't worry too much about that aspect, at least not as a priority.
The challenge is to give a good first impression, and it's hard to judge what that program could become if given a graphical interface. It's described as a "sliding block puzzle" so if it could be made photo-realistic (or close) it could well be the sort of thing I am looking for. It's perfectly acceptable for the program to need separate bitmap files if necessary.
David Marples (of the BB4W forum) has offered a vaguely similar program involving draggable 'gemstones', so it could be that they have too much in common for me to want to use both. I don't know whether some liaison might be desirable.
Richard.
|
|
Logged
|
|
|
|
michael
Full Member
member is offline


Posts: 157
|
 |
Re: Example program challenge
« Reply #6 on: Jan 17th, 2017, 04:34am » |
|
I could offer Volatile Vases game I recently made, which has code based board and vase design. I could improve the help screen and make it gather automatically after a swap.
Here is a link to the code and bmp files it created:
https://1drv.ms/f/s!AmYwmTjbmULXlDz300rujXJ6xSfI
It works on BBC4W. It would require modifications to make it work on BBCSDL (mainly replacing TINT type tracking with arrays) and I may need to use a diffrent technique for the sprites. Maybe redraws.
|
| « Last Edit: Jan 17th, 2017, 05:16am by michael » |
Logged
|
I like reinventing the wheel, but for now I will work on tools for D3D
|
|
|
Richard Russell
Administrator
member is offline


Posts: 803
|
 |
Re: Example program challenge
« Reply #7 on: Jan 17th, 2017, 08:59am » |
|
on Jan 17th, 2017, 04:34am, michael wrote:| It would require modifications to make it work on BBCSDL (mainly replacing TINT type tracking with arrays) |
|
That's a valuable reminder that TINT (and POINT) are very slow in BBCSDL (not my fault - all to do with the way OpenGL and SDL work), so should be avoided whenever possible.
Richard.
|
|
Logged
|
|
|
|
hellomike
Junior Member
member is offline


Gender: 
Posts: 55
|
 |
Re: Example program challenge
« Reply #8 on: Jan 17th, 2017, 09:59am » |
|
Quote:| The challenge is to give a good first impression, and it's hard to judge what that program could become if given a graphical interface. |
|
Well, I have something like this in mind: https://gabrielecirulli.github.io/2048/
which is what the game generally looks like. See also: https://play.google.com/store/search?q=2048
Note that I'm not that keen to include animated sliding though. Would be hard, I assume and would defy the purpose of serving as an example for newbie's in my opinion.
So if including such an implementation has a chance, let me know and then I start coding.
Mike
|
|
Logged
|
|
|
|
Richard Russell
Administrator
member is offline


Posts: 803
|
 |
Re: Example program challenge
« Reply #9 on: Jan 17th, 2017, 2:22pm » |
|
on Jan 17th, 2017, 09:59am, hellomike wrote:| Note that I'm not that keen to include animated sliding though. Would be hard, I assume and would defy the purpose of serving as an example for newbie's in my opinion. |
|
The supplied programs have multiple purposes, only one of which is to serve as "an example for newbies". If that was their primary purpose we would not have mandel.bbc or teapot.bbc or sheet.bbc, none of which can by any stretch of the imagination be described as the sort of program that could be written or understood by a 'newby'!
Rather what I am looking for is a program or programs with the 'wow factor'. Elegance and simplicity are desirable, of course, but not at the expense of the impression they give of the capabilities and power of BBC BASIC.
In any case I wouldn't agree that animating a sliding block is hard:
Code: MODE 20 : VDU 5 w% = 240 : h% = 80 GCOL 11 : RECTANGLE FILL 0, 0, w%, h% GCOL 0 : MOVE 16,60 : PRINT "Sliding block" bx% = 0 : by% = 0 drag% = FALSE MOUSE ox%, oy%, b% REPEAT WAIT 1 MOUSE x%, y%, b% IF x% > bx% IF x% < bx%+w% IF y% > by% IF y% < by%+h% THEN MOUSE ON 137 IF b% drag% = TRUE ELSE MOUSE ON 0 ENDIF IF b% = 0 drag% = FALSE IF drag% THEN RECTANGLE FILL bx%, by%, w%, h% TO bx%+x%-ox%, by%+y%-oy% bx% += x%-ox% : by% += y%-oy% ENDIF ox% = x% : oy% = y% UNTIL FALSE Quote:| So if including such an implementation has a chance, let me know and then I start coding. |
|
Definitely worth pursuing.
Richard.
|
|
|
|
hellomike
Junior Member
member is offline


Gender: 
Posts: 55
|
 |
Re: Example program challenge
« Reply #10 on: Jan 17th, 2017, 7:25pm » |
|
Thanks for the reply. Of course, "RECTANGLE TO". Keep forgetting about its power.
OK, I will give it a try. Where should I post the beta for evaluation?
Mike
|
|
Logged
|
|
|
|
Richard Russell
Administrator
member is offline


Posts: 803
|
 |
Re: Example program challenge
« Reply #11 on: Jan 17th, 2017, 8:10pm » |
|
on Jan 17th, 2017, 7:25pm, hellomike wrote:| Where should I post the beta for evaluation? |
|
I really don't mind. If you have some private webspace (a small amount is often bundled with a broadband package) you can put it there. Or if you've got a cloud storage account (Dropbox, OneDrive, Google Drive, iCloud etc.) they all, I think, provide publicly-accessible spaces - and even if you haven't you can open one for free!
Wherever you choose to put it, just post the URL in a message here so that anybody who wants to can download it.
Richard.
|
|
Logged
|
|
|
|
Richard Russell
Administrator
member is offline


Posts: 803
|
 |
Re: Example program challenge
« Reply #12 on: Jan 18th, 2017, 08:19am » |
|
on Jan 17th, 2017, 7:25pm, hellomike wrote:| Of course, "RECTANGLE TO". Keep forgetting about its power. |
|
I should add that, because it involves 'reading back' from the screen, it shares with POINT and TINT that it is very slow in BBCSDL. If you are wanting to 'animate' a sprite that is easy to redraw (e.g. a BMP image) then you will probably find it faster to redraw it in the new position than to 'copy' it with RECTANGLE TO.
Richard.
|
|
Logged
|
|
|
|
Richard Russell
Administrator
member is offline


Posts: 803
|
 |
Re: Example program challenge
« Reply #13 on: Jan 21st, 2017, 9:45pm » |
|
on Jan 17th, 2017, 7:25pm, hellomike wrote:OK, I will give it a try. Where should I post the beta for evaluation? |
|
Any progress on this front? The next release of BBCSDL is due in only 10 days time so there's a degree of urgency.
For my own peace of mind can you confirm that there are no IPR issues surrounding this game? Obviously I cannot distribute with BBCSDL any program that may raise questions of legality.
Richard.
|
|
Logged
|
|
|
|
hellomike
Junior Member
member is offline


Gender: 
Posts: 55
|
 |
Re: Example program challenge
« Reply #14 on: Jan 23rd, 2017, 2:40pm » |
|
Richard,
Developing the graphical form for the game, I arrived at the infamous last 5% (taking 95% of the time).
Concerning licensing, as per the following Wikipedia link, the concept is free and open-source. "https://en.wikipedia.org/wiki/2048_(video_game)"
I uploaded the unfinished beta for the game to Dropbox. Its location is: https://www.dropbox.com/s/p8hfsq13m6vkn4w/2048beta.bbc?dl=0
Main concern to have this working with BBCSDL, is the font.
The original 2048 game uses open-source font "Clear Sans". I installed that in windows and then in BB4W, the display mimics the original game at https://gabrielecirulli.github.io/2048/ very close, although the score in not kept (yet) nor any animated sliding is implemented. To be SYS "GetTextExtentExPoint" independent, values are kept in the TW&() and TH&() arrays.
The font is at: https://www.dropbox.com/s/k8kyy0gt3zshk78/clearsans-1.00.zip?dl=0 In Windows, when this font isn't installed, the alternative chosen is okay-ish too but BBCSDL just states "No such font".
To overcome the font problem, I could delived a BMP file with the different squares in it and use the same technique as in "PacMan.bbc". However I'm not sure I then can make the deadline.
OK, well that's the current state.
Regards,
Mike
|
|
Logged
|
|
|
|
Richard Russell
Administrator
member is offline


Posts: 803
|
 |
Re: Example program challenge
« Reply #15 on: Jan 23rd, 2017, 6:17pm » |
|
on Jan 23rd, 2017, 2:40pm, hellomike wrote:| Main concern to have this working with BBCSDL, is the font. |
|
The fonts currently supplied with BBCSDL are:
DejaVuSans.ttf DejaVuSansMono.ttf FreeMono.ttf FreeSans.ttf FreeSerif.ttf
I would hope that one of those would be suitable. If not, I would be prepared to include another font but obviously it would need to be 'free' and not governed by licensing conditions that I cannot meet.
You can copy the font-selection code from any of the other examples supplied with BBCSDL to ensure compatibility. There should certainly be no need to resort to a bitmap.
Richard.
|
|
Logged
|
|
|
|
hellomike
Junior Member
member is offline


Gender: 
Posts: 55
|
 |
Re: Example program challenge
« Reply #16 on: Jan 24th, 2017, 08:04am » |
|
This is where I got the font from: https://01.org/clear-sans
It does state that it is free to use. To mimic the original gameplay as close as possible, including the font would help.
One of the BBCSDL font supplied might serve as an alternative, so I wouldn't mind having to add code similar to Code:IF (INKEY(-256) == &57) GUIFONT$="Clear Sans Bold" ELSE GUIFONT$="FreeSans"
However I can't seem to get it to work. In SDLIDE version 0.15a, I can change the display font without a problem (Options -> Set Font...) to e.g. FreeSans,Regular,18.
But when I run the following program I get a "No such font" error.
Code:
Mike
|
|
Logged
|
|
|
|
hellomike
Junior Member
member is offline


Gender: 
Posts: 55
|
 |
Re: Example program challenge
« Reply #17 on: Jan 24th, 2017, 08:14am » |
|
Oh wait.... Code: OSCLI "FONT """ + @lib$ + "DejaVuSansMono.ttf"", 18" PRINT "TEST"
OK, that works.
|
|
Logged
|
|
|
|
Richard Russell
Administrator
member is offline


Posts: 803
|
 |
Re: Example program challenge
« Reply #18 on: Jan 24th, 2017, 08:52am » |
|
on Jan 24th, 2017, 08:04am, hellomike wrote:| But when I run the following program I get a "No such font" error. |
|
As I've explained before, there is no standardised font repository (comparable with the Windows Fonts folder) across the range of Operating Systems supported by BBCSDL. So, unlike in Windows, BBC BASIC does not know where to 'look' for a font, if you simply specify it by name. Also, as far as I know, the other OSes do not have anything like Windows' 'font mapper' that can locate a font without you having to know its exact filename.
So in BBCSDL the *FONT command requires you to specify the full path and filename of the .ttf file, so that it knows what to look for and where to find it. To reiterate, you only need to look in any of the supplied example programs that change the font (and several do) to discover the code you need.
One day I hope that BBCSDL will have its own dedicated documentation which will cover differences of this sort, but I am absolutely determined not to write this myself! I have asked, and I will continue to ask, for other people to take on various aspects of the development of BBCSDL, and documentation is one of them. Because of my 'waning powers' I must focus my efforts on things that only I can do.
As far as the specific typeface that you mention is concerned, the zip file to which you linked (ClearSans) actually contains eight different TTF files, for various weights and italic etc. Would you say that there is a sufficient difference between that typeface and the ones that are already supplied with BBCSDL to justify the inclusion of another 2 Megabytes of files in the distribution?
I notice that ClearSans doesn't support Arabic or Hebrew alphabets. That's not necessarily serious, but I'm uneasy about adding font files to the BBCSDL distribution that aren't reasonably 'international'.
Richard.
|
|
Logged
|
|
|
|
|