ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

Main Area and Open Discussion > General Software Discussion

Need beta testers for a Hangman game

<< < (2/3) > >>

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