diff --git a/C++ProjectTemplate b/C++ProjectTemplate index c1aa29d..ad8441f 100755 Binary files a/C++ProjectTemplate and b/C++ProjectTemplate differ diff --git a/input b/input new file mode 100644 index 0000000..44f74a7 --- /dev/null +++ b/input @@ -0,0 +1,300 @@ +DMwrszrfMzSSCpLpfCCn +RMvhZhQqlvhMvRtbvbcPclPlncddppLTdppd +tVMQhFtjjWmsFJsmsW +trRtvNhfJhSzzSTFVhQQZQhHGphP +CnLMBWLwDMgMcwwdngdHGPVTQGpTHZdGPGpd +LLDqcDgwqCMnLWqtvzrzbbtJqPjJ +wQQwHNQLmbWQbQRHwHNFBbwqPfjqlzRMGRqzpSfvPlzplM +nCtGCZZtsGsrtDMZpfMpSlMlvlZq +cJctJCgVJsCJnDTsCthGhGLwBWBbbQmLbgQLQQdWbbbQ +ZWnNlTNTnhhQQlDNdmmpwrrrqBwjwjZd +GzvlVRSfvMVMvGlSpdCCdjmfpmBCdsqB +bzlFlLzJWLHHttLL +SmzFhVDzrmSrszVDVhSVbhZcCZdfZNcnMfMbZnNN +PTTRGqwqTqWRwLgTLTZGnCbZbNddZCCtMcNs +sgPqPqgJgWWqjjwgwLLVFBFSVmvmBBrmJJDSvp +CBccfSBhcSBddfgtlJmmmwmPRwmh +FpTzzGWHWprgDtJlDZDPFR +HbbTzWnTrnWtCbQBbQqQbSjf +fPHspCjgwZggSvZQ +RrNhzFZFcNzFLNLNwQlSlLnv +TRFrcDVrrRmrhFRZzVrczqhRpjqjsssCpfHjsCdpsPfpjCMC +ZBnBTMVTSbGbTVTGbCPgqsgPtHtgCcPtBB +ldDrmnnNrzhdhfgcsHqcsfCcsCHg +zFdrzNdzQNDDhFdWldDrJTbZTbLZJVVVpMVWVnLS +pLnpQNhBbnWvbsWm +FrFwjlTPTdTqqrDZWbvmZbpSgmJWvbgS +RqDqRrdGFpGRFrFFdTNzCcHcHLHBzQCcNNGN +bvRCtbtCPfSGtCcvCbPNlglqgqlGZMzTgnlZnq +hrmWWFspsHWrzNwTnFlTMTwFFn +HpjJDWBQmmQdRffbPtSzdJ +GpHjFsjMFpCpMWjMGCqWmmqrWQtmthdbDbbD +fzgLTJwJPSgJgzSzPfhmqmQhQHzQtbQDrrmq +RNlBRwHfRJHLLfHTwLSBppNGvjNMFFCVpVFcvcFC +SfQnfSFHfnvMtQQSnHJtMffsdTlZtdZmtllmTlmlRRbBRLDb +hrwhWWwqzPrcCzwwzmPlRbdmlQDTPPBLDl +CpwCzrwGzNCWrJnMvpMvfJVFvQ +rCRPpgSggcpqrhPrCDDTLsMLDSDGLTMGVs +HdvzmRWmlHzwvWHvRHRvHJbDFsdMssQQVGMDTMDLVLLFLT +JBlBnnWBJlCqZRRqRBpr +GtZllZDlfDpGHZtZBGBZpDmzQzzCSVVFHmmmsPCQWWSS +JvFJJrwvNNcJTnbrTRNRSCzqwSsVPCPQqmCQszVm +JLMnTbLnMgBhDFDf +lffDhtgDJzCJNGGTzWTRRnRvBv +qpbpdwqZwqZSwMPSqdQcQmTRnWvnBnRBQBtVnTvWmB +SccbbwSbZbFPswpSZtgFlClLhgChhhNfJlFj +ClmCjCJBjwBVwJGjlGNFJlVMHSrfpDpTfrHMcHTppQVrHp +dRLZWLvWSHmTccWW +ggtqzmRZnmhghZhZghntdqsvBbjlbNFFBPwNNJNNCBlwPGBz +HZmsFZQpvZsWCZQvWrghGrhtgNzdHddHGh +fWSbqWDJVwcSccNzrNhcBtGcgG +VqVfTJnbWjqTSqbwDRfRvQvFpFLRpZsssQsCQZ +FpFZNfplSTJmbZzddGzhDrWh +LqLPPQjLLRMPqvjLLHQrLqrRWdzHnGhdthttGGbbDWhDDdWz +sMLMgvRLgscrLrRQvwmTNNfpNplglplfmp +MPVBmCmWGWRPPqRhLcnjcvjjcpjMvp +tzwrwsJlrldJsrsrTtrzrTtSNnLJSShnjcncvnvqnSFnqN +rswrzsbdwDHHbWZqVfWV +dVmmMTmBPTrCBRMCqFHSWFFHWzCvCz +jNqfGsDqtsjGjQjDlcJFFFznFtzznvtFpFFp +fNNhgsDcfNflqchVRdgVrRPRdVTRRb +HJPLwgLvjttmgHJFjwHgtlsBbNbbNsPpblspTllThT +MzmcRRrdDMVTzbhNNSszhl +mCDDVqdVcdDrqfcCnrFwtGwvngwvtWJtFjWW +dFDpmttBlvNNgWlglNDBFttmTGHTcSSJJHHnMsJsGGSdqcJj +zLbwMLVQbQRwVsJsSHSsHcJqbj +wfVZLPzfZZmpMZZMBl +PZHZMJSTBWHNWSHzVnhhfnhThhpnpC +jFdBBtrFjpfnjfnf +ccGrbblbGRDQMlvmQBvmBl +PCCTsnbPbHDnlDfDNB +rMjQltgSqtvMjScQggjfVVzBzFHzGfVGDLGBqB +vdtrMSttcdwcpSQSdglMrtWRRPJZCpsRZJmWRRWChWPh +pWzbsPCCPPpbptSMCJJwBQQGQt +cDDmcTTRRqzFRddVTSJwMShMtBwhwQMDwv +HldqVmVlZdLTcmRFdrngNNzrffjWpPLggP +JPqvjJmmqvSLmPtpZdcftdmtfdCC +swwhDRwBBHjFFBtBfZ +RRzNQDwznDsDwWJjLNlrSPLSTr +VQmdRLvDlmqZdFrBBJdW +CMstGsnHnHGGMrMZwMpwBSbW +GnsshssNfjtsnggnHCGhjtmfLQQczllvDRVTTQllQWlQ +dhbNbswbwVdNtVdstBtgbNQTBCCSFTmfmMFmfRqQmmQM +HFljLrvZfMQQQPvm +WrpznLZZrnplpWbgdFcFsNzszgst +LjddfTlMccnBfDQBtBQb +ZRSNchHwhNNCHNSWPQFFFHDBBtnQDH +CNpZshSZgpwJmpdLMlplMc +bTmTFmqzgbBntRVsFvVwcv +CZfMrlZLLLMlfPZRLRHGstnjGwtvGcsSVwtcSGvn +ClZpMLCRMZMrHMLmWpqQBpzpgQzmbg +jDmSSGWDDdWdSqqDDqCqpJzqRRqpJnRsMRcMzM +lPgNPvPrrgNrPhNszFggnRzccbMJgz +ZQTHQvQTZPrrQlBBrNvQZZGtTtGdsVCGsCTLLGDmLsjt +rbCfBrbsvQqRFZRNZC +HLSTcwqwZSQFFgRZ +wdDwjpMHqJDTMTdqjlfBvGBhsbfhbsnb +ZhZcHHHlhgchHhlCZZhLCCbGdrsBBGPNBjGbsjNNjnJnPn +wtJqqwDqQQMQFqSqTzwzVTBnGdsjBdnMdPGBBsBdnrjr +RVzJzmSVZmLLWpCc +gdqjQQrlhhQlQrhsnjjhLgmmvmHBBmTmZRsHJzTBHRJv +NwNnGNbGPbmTGpJzppBG +nDnVDfMDrQqQStgM +MLbgbppMMgLmHgQttGQJgJrBShwNShWBBSNNrwNqNN +GnTFlzCVVwPRrVWhSw +GnDDdvdnZDTdnGMsHbbttZgttLbc +mdmPmjClrTzqttfm +cpFnSbcQQsqNNtqWJzHS +QFpcMMBcZtLpQBjVjZhlPjjVlwvw +spVsPjTZZMpZMVLDjmdSQJCLJSmLzdJQdl +HhRnNrqwMhNhnqnHwGNRFBNBrzSCSdQmQCdddbrQSSclSSbQ +nFNqGRvqBfjMvTssfZ +FjjzjnpFqqzFFqgFSZjBhHfHhnHRDDwfdTdLfD +MmCMGCsMWbtJrtCWCbmsmWWhdLGGwRBwdfdLhdTLhHHTBd +bJmtrRvRjgzFFvVq +RWwWmVQGMFGmMGVCVWRRZSBgDdSdJGlSJpcBGGSlpJ +HHhQThnjBDHfSBlS +bPhNjbsssQzFNQqWmz +FTDtrjqwwqGtDbGnfBlcnLcWBZwlWn +mMhRMvJsJvJnMHCvHmhLZLQlhWQBBfPfLPBZ +HRCCsdNdvNmCvggFStbzjbGSSjjn +sLGddsvvcZmLvrLMGcMsVnTTlqlHCsTHHVVgVt +wRbfJPbpNRffRJMBhpDntTCHFNVgqllFlqggHC +DpfbPhRDJPMJppJwzfpbbDGSjrGZvdccQdjGvQZdvrLz +wTwLNLVTqnLMsBwfMsJmCj +JhlGvcdJhSFvFvvvMfgBpCzjzdCfsMMs +DSlPPJSGWrDcFPhtFhWJZHQZLTQVnRWRbHbZHQQT +TmTgTrPDNLNVlDrmlbgNmrSSGbzjZGMvjpZjvvphWMzW +QtBfdfQcdfHtZcnZnGZzchnp +HQHwRBGfBCGBtsrCNPDTmTlNLr +bfNhjhNJDWhlWhlRRR +SsscnHgnSnZnltqqfWRWrzZv +cnfTMfmMnTnmFGsnTVLLLpQJbpbbjpdTdN +BqwZzqRQQRRPSlFRQDDwdfWwhJphnfgfnpMdJfdM +rcTLrcrvDDChWJhfpTgTJh +DHGbGNVCZStGqSqS +dlfdRNNfVdLwrRnwdwRmhLFsbsJJgLqbgCBWBCsW +PHDppMPMHHDPzmBBCmWJqCmbJD +HzzZHmZzQcNdRRdZwddr +wrlshslPsSRfvrQvwbrslCDghtDgCVhDhBVJCFHddt +mZnGpWpWzGTMqnFqDqJNDNFJVJqH +LjpzGcjMGcTzcmmznWSRsfRPfcrbFQcfrwcv +rWBmmmtNmmtBbtlwnhJJVZbw +FsRcjGdLdvFslZbQJZwQps +GHFGvMccFPjgDNbmWWBTTHNz +GhHzmhmwlpbltGBmBmsZsBZsfCWC +rgrcCCPdsWBgNVBD +RnRMdQPMCqndSdQdcQhblpLLwhJbbpzGzwpS +NNQtStFPpJwhRbRzRbqpZZ +jLnmdJrrdDTdbgWbTbRW +JHvnMCmDnMnMljLCDmMLjHNFGGNBPVtQQFtSNFQtPQBv +BFbBRllFZJnPVJbV +GpGHwgzcLhDcwttwthzzhHcPTjZjMgMVZjgZTMmTnMZWJVJm +GccwhqcDtlrPqQrRNQ +gWHWLgHBHQdFhjGGThTQhR +pZsSMpZMJJSzMszzzqclpfjvrvvcRGGTcTVhbVvRbTGTRG +lnMwsqZqsslpjlSMSsffZqqJBgHNNPNDWdLLgdDgdLHPWwCw +qfNvBCBfBqfNMBqCZZfcnmnvtwScpwFSpSsSwt +HzdVzLWPPGGDdnsswnztsRsnmn +QddWVQgJPPHJTJbjBtNTTq +DdRDDPRGGPGccfcbJwsbJWzsnznlLLWzWTLWhVVVVS +CvCrNCqgFqvmqNZFZqqZvpWlVrlVhlhnTLShlDWnzVBD +jvqpvpvpQNCQQCZZmmNgZfdGddRjJDPRMHcHJDHPJf +ttdtBtPPMqWMdgPPBbVGWfTGTTzSVLfVrzCS +ZpDpvRpZDDcmmjmZfLSrwzRnSVSnwTTR +ZvQmjFVHJFDcQjDlZcDVHdqMNtqNBPtPJtbhhbdbts +dGdwwLLpgwgssJpgssNhpJlnbfjnzFfcbfttGjzjlntf +VQvDvHVVQHrQHDCZVBChrHFtzffnfltFFtncnvFtllMl +VBShSqDVRVSTmppPwwsP +fTFDTLNNzlcNrmDcrMDTFPwCSsbCbPPsnCPwLSPvbs +ttQqhJtBRRGnvgHGnlSnbl +hZBJlQBRjVRBRjhtRRMNFVmFmfDNrfWcFVmD +mcTZFBFmqBjmBgPtCtPprmssStCP +LWDQNqDJfQNJddnWfzhfsPRVppVVsSptftpVMS +NDGnJDDDbzddWdNbGNQQLQbqqFBBFcjlZBlHjlZHGBTvZB +PwDzvphPwVwWBqLLwnJWTq +jdCGCgjmllCrmmlmjrbgmRdgJSSJJFLSSqJfLnqLLLbWffLB +mRdjcMHgDpZhDqMZ +cqLjhhrwZwJbBqZhMwbZZdGWdGSllWFvLFGQdnGFQG +gHHVzzppRVggcgpcGWRQRSvdSvvGWvll +HmNNHtVggHsHPtrhJsbjbwCrCqJc +zqPvzLVvzFFQZzWpRLlmHRDHmRCHDH +dNjnJGGrGdqqMprRlpqB +GsgtjhSsSvvSFqvP +pVrfzzjrjWVWTWjrNZvnJSJZqnnqnpSZZS +bdQVQPRPDdcbRGPFddRVMVlZlMlBqSBBZSvSZwnwvJBS +bFbcFbCPPCbbVHCCdVgWfrzjmWfrWrNWgHfT +JgJqLjjjVGgdqGDZGzlGRStStT +PHrHccmrMrTSMVStRtRR +HWPWffNsrppfPWNsVFsmPNCJwwjdJdvdvnJwghBLJLpdLJ +HtHvcnDSDgDcDHtpLrvwjwjfZMjffw +CPWzdJdqVdWZpnLdwnrfdn +GNCNmTQnPVRRglSlHsSG +FJdhjTPbdPJjTPjTjPtSLsSBWWRcCvCvsBWztc +MfGgrHMDDpMnZGDLCRLScCsBlgWvzB +HnmpmNNHGZZpZZrnMPFFbNCNbFdTPVFFFN +TJrrrJQTqJqmTltfRrgfgtgFFg +jLRzBvBjjcnFBNwWlgBZFt +RMjMCGpGzGznzhRmmPPDPsmMmPQmJs +BZqwQCQZGZcVBczqBHtfbbbWfTqNWfMfPNqW +LLpmFjpvpHrvRFSRDRMWbdbtfPWPbjtMgMtW +SDnrpDprDFnQhZCVnhcH +WTsBBQTfQQTTbJBbZbnfTsRFwFrjwjFlrRqvrrlqvWRV +pGcShcGSLNJNHCLttlpllRFgpRFlRpgRrg +GzcMLScSGJGtCbsbQfbZbMBnBn +NGCLGjVjZjQwTGJRQdWM +cFTcvSrFmnnpSmndMswsRMJWRwMHps +rrrhhcTznqvzmcccvvmhgzqDgbgttlDtjjjlfVCfZCjZZV +ccDMHddWNDnnNWMMzdHJJmSQhfQZfvQZflrZQfdVfLLZ +bgBFRTwFtgqCgpRGFpvpVllZlhjrrlVlvj +wtbBGPTPtRTgbCTBqFgGRwFnsWJnmDMsWMJJMzHPhDmJzP +zsbsMtMMdnffBbzNsBtCCWLpLrCrcNLVDWVVcD +TmPhJRvwmjmhFJwjjRPFPTvJGVCcCGBrDpccpDrCrWCVDVFZ +QvSTvBhqwjPmwddHgtqMnllzMl +gftDtqnpqzGZsFcthbtZ +VlNPrBrRNrLBmdRVFCcGCZTFCsTCsbLL +VdldlljlSNHBsSlqfgqMDDvzpHJHWg +tQDLvFLcDrWrcnsHffCGgGHG +ZRPTPJqhMZJZVllRZJPVZPRHnhCnfdssnCznzGhdgfwCHn +qPqlPVlTlSqbZZVJplqlPDmrjWFtmLtFWgQvtmtFvp +zlZzdNRPgGGzsLGCDBBtCDCtSncScP +vWvHWbqjrFMbvrTWcVnQBBBSjLDcQJcL +wfLHwfFqLFbhHvWhMWqwbwwRspssmzgpzGgmmNfmzmRGRz +rPvLrQBvBLsLLdtrgssgZjwFwlnCFMtMFnlllnnb +mNmmzpWHlzjlJMJb +TVSVTWpqRWpSTqNbTVRBPDfLLPrSLrsfQrrvsf +nRjpQWnQnRQzMjRdrtvvPCfmvGtPfMcCtG +TDbrbhNZVbbbbwhDZDhbTTGfcftqcGVvmmcqcJCcCPmJ +NLhrSwgwgnsLsQWljW +JWqVSpGNPdNNzdZJJpMzHzwLgsMwzwQwMBgL +clrlcvrRfccCtFbHrBWLgwLHmMHsHg +DbfDFjcvRcvchWZVWdNpGZNqdh +sdfvFLfmtszQwLfddRpmtDDBjVNWGMNQVQNMJGWJMj +lccrncTZhqqcqhWggvrjMNMGrJMG +SblShnZCqSbPhhbcbTTSZFdFsFpmdRwPwzvmswLtmm +PGwwHpfnFSvVpWqWCQNNjCbbnW +lmddlhcDRBlLRchdmzbNjqqWTcbNPNWTzz +RBMrRdRhlDtPrJtfwFHpsvrHpFSrFw +hhwlglFFSQndLRFbmCbTTz +NczHMMqzpzPcpfBffcmTrdfGbbRbGrdGrLCL +qNzNPqMjcqNBWWccBHsZPDhJnllwnwvJvQnJhQsgvD +mbmvmvbbprZmlFmZbFgLffgQtFNHNhfqQtNQ +SJcdzjSJBzdBdJDzQhhLQfqzNQQHggRL +jwDwcTTDThvTZPPW +FSVBBBvHvCpVVDDGcGwNNhhctwMvMc +fLLZsZVQmjfTfqQRmQhhtgbbJbGJRghtcGct +qTsTQdqjVfqdVdZZqVLpCpzSpdppBlSpCFdHSC +sQQhWsMmQshlhmMQZFDHDJFjgjzHZgcHdH +LnwnpNRrnrbCqqLpwnqfnLcvFHJFzNcHzJcgJJHgdDgN +wCbnpCfPCVqwwnrrbbPRGMMlSllmlTTmsThVMlsd +pzrprfwgbwtwqzrCWbqCwqSMvddHdDSvtHRlDnRRDddD +zQLzQQjPBPFcLcQFTFsmNQzcMNdDdvnldHHvdvnDnRnlvRnJ +cTZGzzscLcPrqrfrZqqbVV +DcSdcTwDLmcwDwvWssGfJfcJQZPGnfcs +FlHFMgtgNggpsztMHMqpjgBBnCfPflfQnZCQBBCnRPZC +gpVjqNVrHFtjqqzSLDTSmTDwwrmhbs +MLMzJTsZzZMgMLgHMmVmdCVhCBlQwDwwhChD +vtPRQpbqCldwdtBC +bQqFbnQbcFfjPRFPQnTrMMgcJgJrssrzgrgS +mtdGJmQRFmdtQvdvtRtdHzHzqZqpHFzZnCzhZjjH +fPwVlllswMVNPfBDDlNVsMsfcBjchHncqzjZbpzjcqCnpHHn +rlsNPWNlhWTPMMNPfwNWTLQRvQLLmgvSJvRJgTRG +TwnqhqqgvQnGBGmBDp +SMjclJSjjVJgCzCzNgpmdBpmBGspRBmpDDVB +JjMCgMMHMMZNStllZSNHhPqFhFWfqPPqTqhLFqtL +lRQPtjPRlDdStDSlPmvllvLsCphFfCHLHggspgFmsFLH +qwpTNprcbNWVHLrfFssBgFCM +NTWTnzTTWGZZZVRSRRQGpdDtSQRp +gpwTPNPBPTdLLLLVGl +jSHdjzZHMcDVtDvFjtCF +HqfZMHzbcqRRRWgdqPmBBBNmwW +PvSBtdFgvSmBPngFBTBjbSjwwpGjsppMjNpMjj +VZLfVQLzQQQhllpcNcwbssvwwwZj +vHWLVVqWTmTgttgq +CNRmNRFNRCWbWNCrlmfGlWqFLsDZQZBZzgwQZsBsDZZCzczB +MSjdVHvHnDDhHvdwBwssZVzwcgLcQg +HnMMTdttHSHSpHvDddpSHTjWlNWFlmRtRmRbqGfqGGNNfR +fBLTDppznrfTndfnfTzTLPvZvvHVbRbggjvzVbzvbV +mwmDGGlqDhMqthGqhJMWmlNVRZPHjgwjjRZbbHRgRHvv +DmhsJsshWGhSGlmlmrdcLLsTBBfcfnBppc +mbCGFFmGmcdTrCTQdh +MJHfJNLllJffPLRTdBqTRQNcqQGB +fPJHfSSSWfSLDMLWGHDMLDFmznmsjmvZwzvjZjbvbZ +pPvpJSfZTTvCzNZczzQZchcj +svbHWsqsvbsMFtVHgVtcRQcDlQRRRQLjlqjczj +tBsgvHVMFggbgFrgWnwSndfBmmBJfPSfpn +jwbwfjSbwjVSjvZPzWSvhvhQlCsBFgLRLLgBLRClLLFQQw +GdNJHpmHTDnTNJqnFCgBLFLFzFtsQRCd +NpMJHpnMrDpJGTHqTTmJHTPjfcvbWfrffVzvZfVWSbjz +wFwpqWwwpqwtqqrbCFtptDmCcfNhNRzRBZRRJRChVNBZBJ +svlvjHsQlvdlvMLdlvPSSLtzzczcNhJthfNtRcNMJNMc +HvvPLSHjgltjsvqwbbnmWmDpgwTT +zhCmPVwwChdCBtsWnNWswBWr +GJJSfSgFpjJjGgpfpgrcNNstvnBHNnHLtFHr +jgDTfjpMgZMGMGJTMMJRhzZPCzbhVlPqdNCbhd +bDbQQmVDRpDNbRQlfQQZnfwTlllfsT +FChzzBWhVzrgMwffJwlnngnTlJ +MCvqvhFzcHCChjtpNNVLppGmbq +bZZzJnccqdzcLhrcQDLrDs +FfCfWVfjWTFClClfwjWCfGGwhZSDhSLsSSRpZprLph +mFmTMmFjMMWFfZtttflWjmWTngNHJHggJJHtzgnJvBtBgHdv diff --git a/main.cpp b/main.cpp index 8ab7e53..1aecb7c 100644 --- a/main.cpp +++ b/main.cpp @@ -4,86 +4,46 @@ using namespace olc; -class Example : public olc::PixelGameEngine +int main() { -public: - Example() - { - sAppName = "Example"; - } - -public: - bool RayVsRect(const vf2d ray_origin, const vf2d ray_dir, const olc::utils::geom2d::rect target, vf2d&contact_point, vf2d&contact_normal, float&t_hit_near){ - - contact_normal = { 0, 0 }; - contact_point = { 0, 0 }; - - vf2d t_near = {(target.pos.x - ray_origin.x) / ray_dir.x, (target.pos.y - ray_origin.y) / ray_dir.y}; - vf2d t_far = {(target.pos.x + target.size.x - ray_origin.x) / ray_dir.x, (target.pos.y + target.size.y - ray_origin.y) / ray_dir.y}; - - if (t_near.x > t_far.x) {float b; b = t_near.x; t_near.x = t_far.x; t_far.x = b;}; - if (t_near.y > t_far.y) {float b; b = t_near.y; t_near.y = t_far.y; t_far.y = b;}; - - if (t_near.x > t_far.y || t_near.y > t_far.x) return false; - - t_hit_near = fmax(t_near.x, t_near.y); - float t_hit_far = fmin(t_far.x, t_far.y); - - if (t_hit_far < 0) return false; - - contact_point.x = ray_origin.x + t_hit_near * ray_dir.x; - contact_point.y = ray_origin.y + t_hit_near * ray_dir.y; - - if (t_near.x > t_near.y) - if ( 1.0f / ray_dir.x < 0) - contact_normal = { 1, 0 }; - else - contact_normal = { -1, 0}; - else - if ( t_near.x < t_near.y) - if ( 1.0f / ray_dir.y < 0) - contact_normal = { 0, 1 }; - else - contact_normal = { 0, -1 }; - - return true; - - - } - vf2d originPoint={16,16}; - bool OnUserCreate() override - { - // Called once at the start, so create things here - return true; - } - - bool OnUserUpdate(float fElapsedTime) override - { - vf2d velocity={(GetKey(D).bHeld-GetKey(A).bHeld)*20*fElapsedTime,(GetKey(S).bHeld-GetKey(W).bHeld)*20*fElapsedTime}; - vf2d contact_point; - vf2d contact_normal; - float t_hit_near; - - Clear(Pixel(64,64,255)); - if (!olc::utils::geom2d::overlaps(olc::utils::geom2d::circle{originPoint+velocity,5},olc::utils::geom2d::rect{{32,32},{64,32}})) { - originPoint+=velocity; - DrawCircle(originPoint,5); - } else { - DrawCircle(originPoint,5,RED); + std::ifstream file("input"); + + int sum=0; + while (file.good()) { + std::string line; + std::string line2; + std::string line3; + std::getline(file,line); + std::getline(file,line2); + std::getline(file,line3); + if (line.length()>0) { + std::cout<<"=========="<='A'&&line[i]<='Z') { + int prio=27+line[i]-'A'; + sum+=prio; + std::cout<<"Prio "<{{32,32},{64,32}},contact_point,contact_normal,t_hit_near)&&t_hit_near<1?YELLOW:WHITE); - return true; - } -}; - + } -int main() -{ - Example demo; - if (demo.Construct(128, 120, 8, 8)) - demo.Start(); + std::cout<<"Sum: "<