Main Area and Open Discussion > General Software Discussion
Need beta testers for a Hangman game
kyrathaba:
Ok, great! I'll PM you in a few minutes, Stephen.
KynloStephen66515:
okie doke :)
kyrathaba:
Been workin' on the PHP component of my "Hangman" game desktop application. Coming along nicely. Bear in mind, this is my VERY FIRST attempt at PHP dev. I didn't know any PHP code a week ago...
Here are some sample screenshots. The desktop application will, with permission, update an online MySQL database as your High Score improves, allowing everyone to compete to climb the High Score ladder, which will be viewable on a web page. No actual passwords are stored in the database. Rather, a salted hash of the user-supplied password is stored. The PHP code then salts a password attempt and compares against the stored hash to determine if the update request is "legitimate".
Here's an example of the URL:
--- Code: Text ---http://localhost/myScripts/hang_update.php?name=user2&highscore=18003&pw=bddkdd5ddcddldd%60ddqddqdd:dd&guid=83a1340f-91f9-4e08-a717-4151b00916c1&[email protected]
The desktop app transforms the actual password, lengthening it, transposing, ascii-shifting, etc. Bear in mind, this isn't a security-critical app, and this is my first attempt.
kyrathaba:
Okay, after almost another two weeks of reading/testing scripts, I think I'm ready for someone to help me beta-test the "Kyrathaba's Hangman" program in conjunction with the associated online PHP scripts. So far, cranioscopical has given invaluable assistance and suggestions.
My primary aim in this phase of beta-testing is to (a) ensure that I've not broken anything in the desktop app while adding features and integrating it with the online database, and to (b) ensure that the online scripts work well in interfacing the program with the database. I would like beta-tester(s) to (c) start from the initial dialog with which they're presented. Answer "Yes" and go from there, all the way through registering a user-name, playing a game, exiting the app, and seeing if the app posted their high score to the database:
Contact me by DC PM or by replying on this thread, please.
kyrathaba:
Have what I think should be an easily-fixed issue with my installer: at the end of the install process, the installer gives the user the option to run the program. It's supposed to launch the newly installed app, then exit the installer, but here's what's happening...
Could someone with experience in Inno Setup scripting check out the following setup script and see if you can spot what I've done (or failed to do) that's causing the installer not to exit after the user checks the "Launch Hangman" checkbox and then clicks the installer's Finish button?
--- Code: PHP ---[_ISTool]EnableISX=true [InstallDelete]Type: filesandordirs; Name: "{pf}\Kyrathasoft\KyrHangman" [Setup]AppMutex=KyrathabaHangmanMutexNameStringOfUniqueCompositionAppName=Kyrathaba's HangmanSetupIconFile=src\KyrHangman\KyrHangman1023src\hangmanIcon.icoAppPublisherURL=http://kyrathaba.dcmembers.comAppVerName=v1.0.2.3AppCopyright=Copyright (C) Kyrathasoft.VersionInfoCompany=KyrathasoftUninstallable=yesCreateUninstallRegKey=yesUpdateUninstallLogAppName=yesUninstallDisplayName=Kyrathaba's HangmanUsePreviousAppDir=yesAppID={{83a1340f-91f9-4e08-a717-4151b00916c1}MinVersion=4.1,4.0AllowCancelDuringInstall=yesDefaultDirName={pf}\Kyrathasoft\KyrHangmanAppendDefaultDirName=yesDefaultGroupName=Kyrathasoft\KyrHangmanUninstallDisplayIcon={app}\UninstallHangman.exeCompression=lzmaSolidCompression=trueOutputBaseFilename=KyrHangman\KyrHangman1023output\KyrHangman1023SetupBackColorDirection=toptobottom [Files]Source: scripts\isxdl\isxdl.dll; Flags: dontcopySource: src\KyrHangman\KyrHangman1023src\KyrHangman.exe; DestDir: {app}Source: src\KyrHangman\KyrHangman1023src\aboutHangman.txt; DestDir: {app}Source: src\KyrHangman\KyrHangman1023src\defaultPuzzles.txt; DestDir: {app}Source: src\KyrHangman\KyrHangman1023src\kyr.dll; DestDir: {app}Source: src\KyrHangman\KyrHangman1023src\hangmanIcon.ico; DestDir: {app}Source: src\KyrHangman\KyrHangman1023src\houseTrans.ico; DestDir: {app}Source: src\KyrHangman\KyrHangman1023src\KyrHangmanLib.dll; DestDir: {app}Source: src\KyrHangman\KyrHangman1023src\website.url; DestDir: "{app}"Source: src\KyrHangman\KyrHangman1023src\README.TXT; DestDir: {app} [Messages]WinVersionTooLowError=This application requires Windows NT4, Windows 98 or later.BeveledLabel=Kyrathasoft [Icons]Name: {group}\Kyrathaba's Hangman; Filename: {app}\KyrHangman.exe; IconFilename: {app}\hangmanIcon.ico;Name: {group}\Uninstall Kyrathaba's Hangman; Filename: {uninstallexe}Name: {userdesktop}\Kyrathaba's Hangman; Filename: {app}\KyrHangman.exe; IconFilename: {app}\hangmanIcon.ico; Tasks: desktopiconName: "{group}\Visit My Web Site"; Filename: "{app}\website.url"; IconFilename: {app}\houseTrans.ico; [Tasks]Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons} [Run]Filename: "{app}\README.TXT"; Description: "View the README file"; Flags: postinstall shellexec skipifsilentFilename: "{app}\KyrHangman.exe"; Flags: postinstall {Code} //changed brackets to braces for this posting only, so that the PHP code tags work properlyvar dotnetRedistPath: string; downloadNeeded: boolean; dotNetNeeded: boolean; memoDependenciesNeeded: string; procedure isxdl_AddFile(URL, Filename: PChar);external 'isxdl_AddFile@files:isxdl.dll stdcall';function isxdl_DownloadFiles(hWnd: Integer): Integer;external 'isxdl_DownloadFiles@files:isxdl.dll stdcall';function isxdl_SetOption(Option, Value: PChar): Integer;external 'isxdl_SetOption@files:isxdl.dll stdcall'; const dotnetRedistURL = 'http://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe'; //dotnetRedistURL = 'http://download.microsoft.com/download/a/a/c/aac39226-8825-44ce-90e3-bf8203e74006/dotnetfx.exe'; //for v1 of framework // local system for testing... // dotnetRedistURL = 'http://192.168.1.1/dotnetfx.exe'; function InitializeSetup(): Boolean; begin Result := true; dotNetNeeded := false; // Check for required netfx installation if (not RegKeyExists(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v4\Client')) then begin dotNetNeeded := true; if (not IsAdminLoggedOn()) then begin MsgBox('This application needs the Microsoft .NET Framework to be installed by an Administrator', mbInformation, MB_OK); Result := false; end else begin memoDependenciesNeeded := memoDependenciesNeeded + ' .NET Framework' #13; dotnetRedistPath := ExpandConstant('{src}\dotnetfx.exe'); if not FileExists(dotnetRedistPath) then begin dotnetRedistPath := ExpandConstant('{tmp}\dotnetfx.exe'); if not FileExists(dotnetRedistPath) then begin isxdl_AddFile(dotnetRedistURL, dotnetRedistPath); downloadNeeded := true; end; end; SetIniString('install', 'dotnetRedist', dotnetRedistPath, ExpandConstant('{tmp}\dep.ini')); end; end; end; function NextButtonClick(CurPage: Integer): Boolean;var hWnd: Integer; ResultCode: Integer; begin Result := true; if CurPage = wpReady then begin hWnd := StrToInt(ExpandConstant('{wizardhwnd}')); // don't try to init isxdl if it's not needed because it will error on < ie 3 if downloadNeeded then begin isxdl_SetOption('label', 'Downloading Microsoft .NET Framework'); isxdl_SetOption('description', 'MyApp needs to install the Microsoft .NET Framework. Please wait while Setup is downloading extra files to your computer.'); if isxdl_DownloadFiles(hWnd) = 0 then Result := false; end; if (Result = true) and (dotNetNeeded = true) then begin if Exec(ExpandConstant(dotnetRedistPath), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then begin // handle success if necessary; ResultCode contains the exit code if not (ResultCode = 0) then begin Result := false; end; end else begin // handle failure if necessary; ResultCode contains the error code Result := false; end; end; end;end; function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;var s: string; begin if memoDependenciesNeeded <> '' then s := s + 'Dependencies to install:' + NewLine + memoDependenciesNeeded + NewLine; s := s + MemoDirInfo + NewLine + NewLine; Result := send;
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version