A. 軟著要求的代碼行數算不算前端代碼
前30頁,後30頁;留檔需要的。
代碼是前端或後端是什麼語言寫的都不重要,也不會真有審核人員用你的代碼去運行。
B. 求Python大神給個200行左右的代碼,多點注釋,做期末大作業
#-*-coding:utf-8-*-
importcurses#引入curses模塊,curses是一個在Linux/Unix下廣泛應用的圖形函數庫.,作用是可以繪制在DOS下的用戶界面和漂亮的圖形。
fromrandomimportrandrange,choice#從random模塊引入randrange,choice這兩個類
#從collections引入defaultdict這個類
letter_codes=[ord(ch)forchin'WASDRQwasdrq']#ord函數是把字元轉換成對應的數字
actions=['Up','Left','Down','Right','Restart','Exit']#上,左,下,右,重啟,退出
actions_dict=dict(zip(letter_codes,actions*2))#把字母與動作對應起來。zip是把元組中的值對應起來。
#############################
WUp
ALeft
SDown
DRight
RRestart
QExit
wUp
aLeft
sDown
dRight
rRestart
QExit
##############################################
defget_user_action(keyboard):
char="N"#char的初始值為Nwhilecharnotinactions_dict:
char=keyboard.getch()returnactions_dict[char]#阻塞+循環,直到獲得用戶有效輸入才返回對應行為deftranspose(field):return[list(row)forrowinzip(*field)]#zip函數里邊加*號,是把行變列,列變行。所以這句代碼是行列轉置definvert(field):return[row[::-1]forrowinfield]#這句代碼是把列表前後顛倒classGameField(object):#創建一個叫做GameField的類,用來創建棋盤def__init__(self,height=4,width=4,win=2048):這個類三個參數self.height=height#高self.width=width#寬self.win_value=win#過關分數self.score=0#當前分數self.highscore=0#最高分self.reset()#重置棋盤defreset(self):#定義一個reset函數ifself.score>self.highscore:#如果當前分數大於最高分,那麼把當前分數賦值給最高分self.highscore=self.scoreself.score=0#當前分數恢復到0分self.field=[[0foriinrange(self.width)]forjinrange(self.height)]#橫縱坐標恢復到(0,0)self.spawn()#調用spawn這個函數self.spawn()defmove(self,direction):#定義move函數defmove_row_left(row):#向左移deftighten(row):#squeesenon-zeroelementstogether把零散的非零單元擠到一塊
new_row=[iforiinrowifi!=0]#如果i不等於零,把他們賦值到new_row這個元組中
new_row+=[0foriinrange(len(row)-len(new_row))]#其餘位置用0補充returnnew_row#返回這個元組defmerge(row):#定義merge函數,用來合並單元
pair=False#pair初始值為假
new_row=[]#new_row初始值為空foriinrange(len(row)):#讓i在格子里循環ifpair:如果pair為真
new_row.append(2*row[i])#那麼把把row【i】的值乘以2,追加到new_row後邊self.score+=2*row[i]#並且得分為row【i】的值乘以2
pair=False#pair重新賦值為假else:如果pair為真ifi+1<len(row)androw[i]==row[i+1]:#如果i+1還沒到邊界,並且此時的row【i】=row【i+1】
pair=True#那麼pair為真
new_row.append(0)#new_row後追加零else:
new_row.append(row[i])#否則追加row【i】
assertlen(new_row)==len(row)#提醒兩者長度一致returnnew_rowreturntighten(merge(tighten(row)))#反復合並,知道不能合並為止
moves={}
moves['Left']=lambdafield:
[move_row_left(row)forrowinfield]#做移動
moves['Right']=lambdafield:
invert(moves['Left'](invert(field)))#invert是逆轉
moves['Up']=lambdafield:
transpose(moves['Left'](transpose(field)))#transpose是轉置
moves['Down']=lambdafield:
transpose(moves['Right'](transpose(field)))ifdirectioninmoves:ifself.move_is_possible(direction):#如果移動方向在四個方向上,self.field=moves[direction](self.field)那麼調用moves函數self.spawn()#產生隨機數returnTrueelse:returnFalsedefis_win(self):returnany(any(i>=self.win_valueforiinrow)forrowinself.field)defis_gameover(self):returnnotany(self.move_is_possible(move)formoveinactions)defdraw(self,screen):
help_string1='(W)Up(S)Down(A)Left(D)Right'
help_string2='(R)Restart(Q)Exit'
gameover_string='GAMEOVER'
win_string='YOUWIN!'defcast(string):
screen.addstr(string+' ')defdraw_hor_separator():
line='+'+('+------'*self.width+'+')[1:]
separator=defaultdict(lambda:line)ifnothasattr(draw_hor_separator,"counter"):
draw_hor_separator.counter=0
cast(separator[draw_hor_separator.counter])
draw_hor_separator.counter+=1defdraw_row(row):
cast(''.join('|{:^5}'.format(num)ifnum>0else'|'fornuminrow)+'|')
screen.clear()
cast('SCORE:'+str(self.score))if0!=self.highscore:
cast('HGHSCORE:'+str(self.highscore))forrowinself.field:
draw_hor_separator()
draw_row(row)
draw_hor_separator()ifself.is_win():
cast(win_string)else:ifself.is_gameover():
cast(gameover_string)else:
cast(help_string1)
cast(help_string2)defspawn(self):
new_element=4ifrandrange(100)>89else2
(i,j)=choice([(i,j)foriinrange(self.width)forjinrange(self.height)ifself.field[i][j]==0])self.field[i][j]=new_elementdefmove_is_possible(self,direction):defrow_is_left_movable(row):
defchange(i):#trueifthere'llbechangeini-thtileifrow[i]==0androw[i+1]!=0:#MovereturnTrueifrow[i]!=0androw[i+1]==row[i]:#(change(i)foriinrange(len(row)-1))
check={}
check['Left']=lambdafield:
any(row_is_left_movable(row)forrowinfield)
check['Right']=lambdafield:
check['Left'](invert(field))
check['Up']=lambdafield:
check['Left'](transpose(field))
check['Down']=lambdafield:
check['Right'](transpose(field))ifdirectionincheck:returncheck[direction](self.field)else:returnFalsedefmain(stdscr):definit():#重置游戲棋盤
game_field.reset()return'Game'defnot_game(state):#畫出GameOver或者Win的界面
game_field.draw(stdscr)#讀取用戶輸入得到action,判斷是重啟游戲還是結束游戲
action=get_user_action(stdscr)
responses=defaultdict(lambda:state)#默認是當前狀態,沒有行為就會一直在當前界面循環
responses['Restart'],responses['Exit']='Init','Exit'#對應不同的行為轉換到不同的狀態returnresponses[action]defgame():#畫出當前棋盤狀態
game_field.draw(stdscr)#讀取用戶輸入得到action
action=get_user_action(stdscr)ifaction=='Restart':return'Init'ifaction=='Exit':return'Exit'ifgame_field.move(action):#movesuccessfulifgame_field.is_win():return'Win'ifgame_field.is_gameover():return'Gameover'return'Game'
state_actions={'Init':init,'Win':lambda:not_game('Win'),'Gameover':lambda:not_game('Gameover'),'Game':game
}
curses.use_default_colors()
game_field=GameField(win=32)
state='Init'#狀態機開始循環whilestate!='Exit':
state=state_actions[state]()
curses.wrapper(main)
C. 那些很長很長的html代碼是怎麼編有200多行
多數都是使用可視化編輯軟體來做的!
Dreamweaver
FontPage
,,,
還有其他的HTML編輯軟體
只有那些非常有創意
編輯軟體無法方便實現的
才自己寫
不然這么多東西都自己寫那不傻掉了
其他的語言也都有這樣類似的啊
很多語言都有自己的庫和代碼模版
套用就可以方便使用
可視化軟體就是提供了大量模版和快捷方式的編寫工具。
D. 求java程序代碼,200行左右
/**
需求:獎客富翁游戲。
菜單為:
1.注冊用戶信息。填寫用戶名,密碼,電腦隨機輸出一個4位
數字作為會員卡號。提示用戶名,密碼,及會員卡號。可選擇第二步了
2.登陸。校驗是否已注冊(是否存在會員卡號)。如果為空,
提示用戶不存在。
如果用戶名通過,密碼錯誤,提示用戶名和密碼不匹配。如果
驗證成功結束。如果輸入的用戶名密碼均匹配,給出登陸成功提示。
可選擇第三步了。
3.先判斷用戶是否已登陸(是否存在會員卡)
詢問是否進行抽獎,選Y,電腦隨機輸出5個4位
數字。如果其中有一個數字與用戶卡號相同,則為中獎,獎勵
人民幣為卡號數字的金額。否則,謝謝參與。程序退出。
*/
importjava.util.Scanner;
importjava.util.Random;
publicclassRichPerson{
publicstaticvoidmain(String[]args){
//輸出菜單。
for(inta=0;a<6;a++){
System.out.print("*");
}
System.out.print("歡迎進入獎客富翁系統");
for(intb=0;b<6;b++){
System.out.print("*");
}
System.out.print(" 1.注冊 "+" 2.登錄 "+" 3.抽獎 ");
for(intc=0;c<31;c++){
System.out.print("*");
}
//輸出菜單結束。
intcaidan=0;//操作菜單
Stringname=null;//會員注冊名字
Stringmyname=null;//會員登錄名字
Stringpassword=null;//會員注冊密碼
Stringmypassword=null;//會員登錄密碼
intnumber=0;//會員卡號
//intluckynumber=0;//幸運號碼
Stringstr=null;//詢問是否重試
//輸入數字選擇菜單。
Scannerinput=newScanner(System.in);
Randomoutput=newRandom();
do{
System.out.println(" 請選擇菜單:");
caidan=input.nextInt();
switch(caidan){
case1:
System.out.println("歡迎注冊富翁,請依次輸入用戶名和密碼");
System.out.println("用戶名:");
name=input.next();
System.out.println("密碼:");
password=input.next();
//隨機給出4位數的會員卡號
number=output.nextInt(8999)+1000;
System.out.println("注冊成功!您的用戶名:"+name+",密碼:"+password
+",會員卡號:"+number+"。請牢記!");
break;
case2:
//先判斷用戶是否已注冊。
if(name==null){
System.out.println("您好,請先注冊!");
break;
}else{
System.out.println("歡迎登錄富翁,請依次輸入用戶名和密碼!");
//用戶名和密碼匹配校驗次數設置為3次。
for(intx=0;x<3;x++){
System.out.println("用戶名:");
myname=input.next();
if(!myname.equals(name)){
System.out.println("用戶"+myname+"不存在!請重試,剩餘次數"
+(2-x)+"次!");
}else{
System.out.println("密碼:");
}
mypassword=input.next();
if(!mypassword.equals(password)){
System.out.println(myname+"密碼錯誤!"+"請重試,剩餘次數"
+(2-x)+"次!");
}else{
System.out.println("登陸成功!");
break;
}
}
}
break;
case3:
//判斷用戶是否已注冊,是否已登錄。
if(mypassword==null){
System.out.println("您好,請先登錄!");
break;
}elseif(!mypassword.equals(password)){
System.out.println("您好,請先重試登錄!");
break;
}elseif(mypassword.equals(password)){
System.out.println("歡迎進入富翁,請問是否進行幸運抽獎(y/n)?");
Stringchoujiang=input.next();
if(choujiang.equals("y")){
int[]luckynumber=newint[5];
for(intm=0;m<5;m++){
luckynumber[m]=output.nextInt(8999)+1000;
}
for(intm=0;m<5;m++){
System.out.print(luckynumber[m]+" ");
}
System.out.println(" "+number);
for(intm=0;m<5;m++){
if(number==luckynumber[m]){
System.out.println(" 中獎!金額為:"+luckynumber);
break;
}else{
System.out.println(" 木有中獎!");
break;
}
}
E. 如果想學前端先學軟體技術 (大數據)如何
數據分析還是分等級的
我知道的有隻負責 清洗數據的 比較少 比較簡單
還有就是負責建模的,掌握常用的十多個機器學習演算法就能是二流的了~~要做到一流的就要熟練掌握各個演算法的本質了
看他們做數據分析的各有不同吧,聽說阿里是要寫代碼的,一個月200行代碼的樣子,他們自己說是跟研發差不多,ebay是不寫一行代碼的 純excel
F. 想學編程去哪裡比較好
第一步,首先對自己的定位要明晰,你學習編程是興趣驅動熱愛技術,隨大流感覺變成很熱門,或者是一時沖動沒經過思考。如果你是後兩種,並且本身不是屬於理性思維較強的那類,那你以後學習編程會非常累,而且進步很難,可能最終也只是廢了很大勁兒找到一個不能滿足預期的工作崗位。
第二步,學會一門編程語言入門,目前java,python,c,c++,php,html等等很多種,但是主要適合的工種不同,如果想盡快入門,推薦python,學習途徑主要是三種一是看書,很多入門書籍可選,選擇一本合適的就可以,差別不大,畢竟都是基礎知識。二是看視頻,慕課網,b站等都可以,選擇講解清楚的就行。三是實練,這個推薦實驗樓,可以一邊看文檔一遍在實驗樓提供的虛擬環境下進行練習,但是這個可能需要對linux以及vim等有一定了解,難度系數較高,但是效果很明顯。
第三步,有了一定的編程語言基礎之後,就可以多逛論壇博客看看別人寫的項目了,csdn,腳本之家等都不錯,這個時期可以多多嘗試,先讀懂別人的代碼,然後自己試著做一些小項目,比如200行代碼實現2048小游戲,識別圖片之類的。實驗樓網站上也有很多項目,可以練練,感覺還是蠻好的。多積累項目經驗,找出自己的方向。
第四步,明確方向,想好自己是想做前端,後台,演算法,機器學習,數據還是別的什麼。確定好方向了就需要系統的學習這個方面的知識,就是學習路線,這個很多博客還有網站上面都有分享,實驗樓上面也有學習路線,也可以網路。不要人雲亦雲,自己的想法要從自身出發。
第五步,多實戰,獨立做一些較大的項目,系統學習,很多知識都比較艱澀專業,因此建議啃書,因為實戰中涉及到很多具體的問題,網上的分享很多都不一定適合實戰場景,而且問題的解決更多需要當事人的思考,這時候就需要大量的知識積累,所以趁年輕多看書吧,外文文獻能看懂更好。
G. web前端不掉頭發的學習方法
不掉頭發的前端(這可能嗎哈哈)
只要想學習哪裡學習都是有效果的。但需要結合自身的一些特點來調整學習方向,這樣學習起來會事半功倍,以下推薦3種學習線路,適用於不同的學習人群;
方法1:先學習編程,然後學習Web滲透及工具使用等
適用人群:有一定的代碼基礎的小夥伴
(1)基礎部分
基礎部分需要學習以下內容:
(1.1)計算機網路 :
重點學習OSI、TCP/IP模型,網路協議,網路設備工作原理等內容,其他內容快速通讀;
【推薦書籍】《網路是怎樣連接的_戶根勤》一書,簡明扼要,淺顯易懂,初學者的福音;如果覺得不夠專業,可以學習圖靈設計叢書的《HTTP權威指南》;
(1.2)Linux系統及命令 :
由於目前市面上的Web伺服器7成都是運行在Linux系統之上,如果要學習滲透Web系統,最起碼還是要對linux系統非常熟悉,常見的操作命令需要學會;
學習建議:學習常見的10%左右的命令適用於90%的工作場景,和office軟體一樣,掌握最常用的10%的功能,基本日常使用沒什麼問題,遇到不會的,再去找相關資料;常見的linux命令也就50-60個,很多小白囫圇吞棗什麼命令都學,這樣其實根本記不住。
【推薦書籍】Linux Basics for Hackers;
(1.3)Web框架 :
熟悉web框架的內容,前端HTML,JS等腳本語言了解即可,後端PHP語言重點學習,切記不要按照開發的思路去學習語言,php最低要求會讀懂代碼即可,當然會寫最好,但不是開發,但不是開發,但不是開發,重要的事情說三遍;
資料庫:
需要學習sql語法,利用常見的資料庫MySQL學習對應的資料庫語法,也是一樣,SQL的一些些高級語法可以了解,如果沒有時間完全不學也不影響後續學習,畢竟大家不是做資料庫分析師,不需要學太深;
(2)Web安全
(2.1)Web滲透
掌握OWASP排名靠前的10餘種常見的Web漏洞的原理、利用、防禦等知識點,然後配以一定的靶場練習即可;有的小白可能會問,去哪裡找資料,建議可以直接買一本較為權威的書籍,配合一些網上的免費視頻系統學習,然後利用開源的靶場輔助練習即可;
【推薦書籍】白帽子講Web安全(阿里白帽子黑客大神道哥作品)
【推薦靶場】常見的靶場都可以上github平台搜索,推薦以下靶場DVWA、bWAPP、upload-labs-master、SQL-lib-master、WebBug、pikachu等,有些是綜合靶場,有些是專門針對某款漏洞的靶場;
(2.2)工具學習
Web滲透階段還是需要掌握一些必要的工具,工具的學習b站上的視頻比較多,挑選一些講解得不錯的視頻看看,不要一個工具看很多視頻,大多數視頻是重復的,且很浪費時間;
主要要掌握的工具和平台:burp、AWVS、Appscan、Nessus、sqlmap、nmap、shodan、fofa、代理工具ssrs、hydra、mesa、airspoof等,以上工具的練習完全可以利用上面的開源靶場去練習,足夠了;
練習差不多了,可以去SRC平台滲透真實的站點,看看是否有突破,如果涉及到需要繞過WAF的,需要針對繞WAF專門去學習,姿勢也不是特別多,系統性學習學習,然後多總結經驗,更上一層樓;
(2.2)自動化滲透
自動化滲透需要掌握一門語言,且需要熟練運用,可以是任何一門自己已經掌握得很熟悉的語言,都可以,如果沒有一門掌握很好的,那我推薦學習python,最主要原因是學起來簡單,模塊也比較多,寫一些腳本和工具非常方便;
雖說不懂自動化滲透不影響入門和就業,但是會影響職業的發展,學習python不需要掌握很多不需要的模塊,也不需要開發成千上萬行的代碼,僅利用它編寫一些工具和腳本,少則10幾行代碼,多則1-200行代碼,一般代碼量相對開發人員已經少得不能再少了,例如一個精簡的域名爬蟲代碼核心代碼就1-20行而已;
幾天時間學習一下python的語法,有代碼基礎的,最快可能一天就可以學習完python的語法,因為語言都是相通的,但是學習語言最快的就是寫代碼,別無他法;接下來可以開始嘗試寫一些常見的工具,如爬蟲、埠探測、數據包核心內容提取、內網活躍主機掃描等,此類代碼網上一搜一大把;然後再寫一些POC和EXP腳本,以靶場為練習即可;有的小夥伴可能又要問了,什麼是POC和EXP,自己網路去,養成動手的好習慣啦;
(2.3)代碼審計
此處內容要求代碼能力比較高,因此如果代碼能力較弱,可以先跳過此部分的學習,不影響滲透道路上的學習和發展。
如果希望在Web滲透上需要走得再遠一些,需要精通一門後台開發語言,推薦php,因為後台採用php開發的網站占據最大,當然你還精通python、asp、java等語言,那恭喜你,你已經具備很好的基礎了;
代碼審計顧名思義,審計別人網站或者系統的源代碼,通過審計源代碼或者代碼環境的方式去審計系統是否存在漏洞(屬於白盒測試范疇)
那具體要怎麼學習呢?學習的具體內容按照順序列舉如下 :
掌握php一些危險函數和安全配置;
熟悉代碼審計的流程和方法;
掌握1-2個代碼審計工具,如seay等;
掌握常見的功能審計法;(推薦審計一下AuditDemo,讓你產生自信)
常見CMS框架審計(難度大); 代碼審計有一本國外的書籍《代碼審計:企業級Web代碼安全架構》,當然有空的時候可以去翻翻,建議還是在b站上找一套系統介紹的課程去學習;github上找到AuditDemo,下載源碼,搭建在本地虛擬機,然後利用工具和審計方法,審計AuditDemo中存在的10個漏洞,難度分布符合正態分布,可以挑戰一下;
至於CMS框架審計,可以去一些CMS官方網站,下載一些歷史存在漏洞的版本去審計,框架的學習利用官方網站的使用手冊即可,如ThinkPHP3.2版本是存在一些漏洞,可以嘗試讀懂代碼;但是切記不要一上來就看代碼,因為CMS框架的代碼量比較大,如果不系統先學習框架,基本屬於看不懂狀態;學習框架後能夠具備寫簡單的POC,按照代碼審計方法結合工具一起審計框架;其實也沒沒想像中的那麼難,如果你是開發人員轉行的,恭喜你,你已經具備代碼審計的先天性優勢。
可能有人會問:「我代碼很差,不學習代碼審計行不行?」其實代碼審計不是學習網路安全的必要條件,能夠掌握最好,掌握不了也不影響後續的學習和就業,但你需要選擇一個階段,練習得更專業精通一些,如web滲透或者內網滲透,再或者是自動化滲透;
(3)內網安全
恭喜你,如果學到這里,你基本可以從事一份網路安全相關的工作,比如滲透測試、Web滲透、安全服務、安全分析等崗位;
如果想就業面更寬一些,技術競爭更強一些,需要再學習內網滲透相關知識;
內網的知識難度稍微偏大一些,這個和目前市面上的學習資料還有靶場有一定的關系;內網主要學習的內容主要有:內網信息收集、域滲透、代理和轉發技術、應用和系統提權、工具學習、免殺技術、APT等等;
可以購買《內網安全攻防:滲透測試實戰指南》,這本書寫得還不錯,國內為數不多講內網的書籍,以書籍目錄為主線,然後配合工具和靶場去練習即可;
那去哪裡可以下載到內網靶場?如果你能力夠強,電腦配置高,可以自己利用虛擬機搭建內網環境,一般需要3台以上的虛擬機;你也可以到國外找一些內網靶場使用,有一些需要收費的靶場還可以;
(4)滲透拓展
滲透拓展部分,和具體工作崗位聯系也比較緊密,盡量要求掌握,主要有日誌分析、安全加固、應急響應、等保測評等內容;其中重點掌握前三部分,這塊的資料網路上也不多,也沒有多少成型的書籍資料,可通過行業相關的技術群或者行業分享的資料去學習即可,能學到這一步,基本上已經算入門成功,學習日誌分析、安全加固、應急響應三部分的知識也相對較為容易。
方法2:先學習Web滲透及工具,然後再學習編程
適用人群:代碼能力很弱,或者根本沒有什麼代碼能力,其他基礎也相對較差的小夥伴
基礎需要打好,再學習Web滲透比如linux系統、計算機網路、一點點的Web框架、資料庫還是需要提前掌握;
像php語言、自動化滲透和代碼審計部分內容,可以放在最後,當學習完畢前面知識後,也相當入門後,再來學習語言,相對會容易一些;
【優先推薦】方法2,對於小白來說,代碼基礎通常較弱,很多很多小白會倒在前期學習語言上,所以推薦方法2的學習,先學習web滲透和工具,也比較有意思,容易保持一個高漲的學習動力和熱情,具體學習內容我就不說了,請小夥伴們參照方法1即可。
方法3:選擇一些適合自己的課程學習
適用人群:需要體系化學習、增強實戰能力的小夥伴
具體根據自身條件來講,如果你自學能力較差,那建議選擇課程學習,網上各大平台等都有很多各式各樣的課程,是可以更快幫助你迅速入門的,然後再根據自己自身所欠缺的方面,不斷去完善和學習,最後達到你所要的優秀水平。
學習書籍推薦如下:
【基礎階段】
Linux Basics for Hackers(中文翻譯稿)
Wireshark網路分析(完整掃描版)
精通正則表達式(中文第3版)
圖解HTTP 彩色版
[密碼學介紹].楊新.中文第二版
網路是怎樣連接的_戶根勤
[PHP與MySQL程序設計(第4版)].W.Jason.Gilmore
【web滲透階段】
web安全攻防滲透測試實戰指南
白帽子講Web安全
Web安全深度
【自動化滲透階段】
Python編程快速上手-讓繁瑣工作自動化
【代碼審計階段】
代碼審計:企業級Web代碼安全架構
【內網滲透階段】
內網安全攻防:滲透測試實戰指南
社會工程防範釣魚欺詐
H. 前端代碼是怎麼弄的
Web前端開發技術包括三個要素:HTML、CSS和JavaScript,但隨著RIA的流行和普及,Flash/Flex、Silverlight、XML和伺服器端語言也是前端開發工程師應該掌握的。Web前端開發工程師既要與上游的交互設計師、視覺設計師和產品經理溝通,又要與下游的伺服器端工程師溝通,需要掌握的技能非常多。這就從知識的廣度上對Web前端開發工程師提出了要求。如果要精於前端開發這一行,也許要先精十行。然而,全才總是少有的。所以,對於不太重要的知識,我們只需要「通」即可。但「通」到什麼程度才算夠用呢?對於很多初級前端開發工程師來說,這個問題是非常令人迷惑的。 總之前端學習了這些就夠了:div+css+javascript+flash+xml
I. 中分,緊急求個200行左右的C語言源代碼!
#include <iostream.h>
#include <fstream.h>
int mark[]; //右來保存走法的
int num[2][2];//棋盤
int temp;
int k ;
int q ;
string strAim = "123804765" //目標字元串,空格用0表示
string States[100];//字元竄數組
int iQuick; //有來退出遞歸的標志,1,表示找到走法,可以退出,0,怎麼沒有找到走法,繼續走
Hrd(int i,int j)//華龍道演算法,好像能找到結果,但是不能找到最少步數的結果,我不確定會不會還有漏洞。結果保存在mark[]中
{ string str1;
if (i!=0) //如果可以向上走,則向上走一步
{
temp=num[i-1][j];
num[i-1][j]=num[i][j];
num[i][j]=temp ; //交換空格和它上面的數字
// 保存交換後的狀態
str1=Change2Str(num[][]); //轉化成字元串,用來比較
if (CompState(str1)) //比較變換後的狀態是否在以前的狀態中出現過
{
//如果以前出現過,則返回
temp=num[i-1][j];
num[i-1][j]=num[i][j];
num[i][j]=temp ; // 把原來交換過的數字再交換過來
return ;
}
else//比較後,發現目前的狀態以前沒有出現過
{ mark[k++]=1 ;
if(strcmp(&strAim,& str1)=1)//跟目標比,看是否相等
{
iquick=1;
return;
}
else //不相等,沒有達到最後我們的要求
{
//1 代表向上走了一步
Add2States(str1); //保存現在的狀態到狀態數組中
Hrd(i-1,j);
if (iquick=1) //可以退出
{
return;
}
} //遞歸,繼續遍歷
}
}
if(j!=2)//如果可以向右走,則向右走一步
{
temp=num[i][j+1];
num[i][j+1]=num[i][j] ;
num[i][j]=temp;
// 保存交換後的狀態
str1=Change2Str(num[][]); //轉化成字元串,用來比較
if (CompState(str1)) //比較變換後的狀態是否在以前的狀態中出現過
{
//如果以前出現過,返回
temp=num[i][j+1];
num[i][j+1]=num[i][j] ;
num[i][j]=temp; // 把原來交換過的數字再交換過來
return;
}
else//比較後,發現目前的狀態以前沒有出現過
{ mark[k++]=2 ; //2 代表向右走了一步
if(strcmp(&strAim,& str1)=1)//跟目標比,看是否相等
{
iquick=1;
return;
}
else //沒有達到結果
{
Add2States(str1); //保存現在的狀態到狀態數組中
Hrd(i,j+1) ; //遞歸,繼續遍歷
if (iquick=1)
{
return;
}
}
}
}
if (i!=2)// 如果可以向下走,則向下走一步
{
temp=num[i+1][j];
num[i+1][j]=num[i][j];
num[i][j]=temp;
// 保存交換後的狀態
str1=Change2Str(num[][]); //轉化成字元串,用來比較
if (CompState(str1)) //比較變換後的狀態是否在以前的狀態中出現過
{
//如果以前出現過,則返回
temp=num[i+1][j];
num[i+1][j]=num[i][j];
num[i][j]=temp; // 把原來交換過的數字再交換過來
return ;
}
else//比較後,發現目前的狀態以前沒有出現過
{ mark[k++]=3 ; //3 代表向下走了一步
if(strcmp(&strAim,& str1)=1)//跟目標比,看是否相等
{
iquick=1;
return;
}
else //沒有達到最後我們的要求
{
Add2States(str1); //保存現在的狀態到狀態數組中
Hrd(i+1,j) ; //遞歸,繼續遍歷
if (iquick=1)
{
return;
}
}
}
}
if (j!=0)//如果可以向左走,則向左走一步
{
temp=num[i1][j-1];
num[i][j-1]=num[i][j];
num[i][j]=temp;
// 保存交換後的狀態
str1=Change2Str(num[][]); //轉化成字元串,用來比較
if (CompState(str1)) //比較變換後的狀態是否在以前的狀態中出現過
{
//如果以前出現過,則回溯
temp=num[i][j-1];
num[i][j-1]=num[i][j];
num[i][j]=temp; // 把原來交換過的數字再交換過來
return ;
}
else//比較後,發現目前的狀態以前沒有出現過
{ mark[k++]=4 ; //1 代表向右走了一步
if(strcmp(&strAim,& str1)=1)//跟目標比,看是否相等
{
iquick=1;
return;
}
else //沒有達到最後我們的要求
{
Add2States(str1); //保存現在的狀態到狀態數組中
Hrd(i,j-1) ; //遞歸,繼續遍歷
if (iquick=1)
{
return;
}
}
}
}
//如果都走過了,則返回
k--;
return;
}
void Change2Str(int arr[][])// 把二維數組轉換成一個字元串
{int i,j
string strState
for (i=0;i<3 ;i++ )
{ for (j=0;j<3 ;j++ )
{
strState= strState & arr[i][j];
}
}
return strState;
}
void CompState(string str1 )//比較當前的狀態是否再以前的狀態中出現過
{ int i;
for (i=0;i<len(states[])-1 ; i++)//len(states[]),取得數組的長度,有點忘了
{
if (strcmp(&States[i],&str1)!=0)//如果兩個字元串相等,則函數返回true
{
return true;
}
}
return false;
}
Add2States(string str1)
{
States[q++]=str1 ;
}
main()
{ num[0][0]=1;
num[0][1]=2;
num[0][2]=3;
num[1][0]=8;
num[1][1]=6;
num[1][2]=4;
num[2][0]=1;
num[2][1]=0;
num[2][2]=5;
hrd(2,1);
for(int i=0 ,i<100,i++)
{count<<mark[i]<<endl;
}
}
Dim moveup As Integer '蛇向上轉向的標志
Dim movedown As Integer
Dim moveleft As Integer
Dim moveright As Integer
Public u As Integer 'u,l,r,d為蛇轉向時的控制數值
Public d As Integer
Public l As Integer
Public r As Integer
Public score As Integer '游戲分數
Public speed As Integer '游戲速度
Public pause As Boolean '游戲暫停標志
Public gamebegin As Boolean '游戲開始標志
Public s As Integer '蛇的當前長度,開始時設為6
Public eatd As Boolean '蛇是否吃到食物的標志
Public lastx As Integer '若蛇吃到食物,lastx,lasty用來存放當前最後一個shape的運動狀態,以供設定新的shape運動狀態之用
Public lasty As Integer
Option Base 1
Dim X(100) As Long '數組存放蛇的長度
Dim Y(100) As Long
Public Sub eat() '判斷蛇是否吃到食物的函數
If X(1) = -200 Then
If Shape1(1).Left <= Shape2.Left And Shape1(1).Top = Shape2.Top Then
eatd = True
End If
End If
If Y(1) = -200 Then
If Shape1(1).Top <= Shape2.Top And Shape1(1).Left = Shape2.Left Then
eatd = True
End If
End If
If X(1) = 200 Then
If Shape1(1).Left >= Shape2.Left + 200 And Shape1(1).Top = Shape2.Top Then
eatd = True
End If
End If
If Y(1) = 200 Then
If Shape1(1).Top >= Shape2.Top + 200 And Shape1(1).Left = Shape2.Left Then
eatd = True
End If
End If
End Sub
Public Sub ensure_position() '此函數確定新的shape1(s)的位置
If X(s - 1) = -200 Then
Shape1(s).Left = Shape1(s - 1).Left + 200: Shape1(s).Top = Shape1(s - 1).Top
End If
If Y(s - 1) = -200 Then
Shape1(s).Left = Shape1(s - 1).Left: Shape1(s).Top = Shape1(s - 1).Top + 200
End If
If X(s - 1) = 200 Then
Shape1(s).Left = Shape1(s - 1).Left - 200: Shape1(s).Top = Shape1(s - 1).Top
End If
If Y(s - 1) = 200 Then
Shape1(s).Left = Shape1(s - 1).Left: Shape1(s).Top = Shape1(s - 1).Top - 200
End If
End Sub
Public Sub ensure_state() '此過程用來確定新的控制項的初始運動狀態
If X(1) = -200 Then
If moveleft = 1 Then
X(s) = X(s - 1): Y(s) = Y(s - 1)
Else
X(s) = lastx: Y(s) = lasty
End If
End If
If Y(1) = -200 Then
If moveup = 1 Then
X(s) = X(s - 1): Y(s) = Y(s - 1)
Else
X(s) = lastx: Y(s) = lasty
End If
End If
If X(1) = 200 Then
If moveright = 1 Then
X(s) = X(s - 1): Y(s) = Y(s - 1)
Else
X(s) = lastx: Y(s) = lasty
End If
End If
If Y(1) = 200 Then
If movedown = 1 Then
X(s) = X(s - 1): Y(s) = Y(s - 1)
Else
X(s) = lastx: Y(s) = lasty
End If
End If
End Sub
Public Sub strike_oneself() '測試蛇頭是否撞到自己
Dim i
Dim j: j = 0
If Y(1) = 200 Then '蛇頭向下撞到自己
For i = 7 To s '蛇頭只能和第六塊或以後的蛇身相撞
If Shape1(1).Top = Shape1(s).Top And Shape1(1).Left = Shape1(s).Left Then
Form1.initialize
Form1.outputmessage
Exit For
End If
Next i
End If
If X(1) = 200 Then '蛇頭向右撞到自己
For i = 7 To s
If Shape1(1).Left = Shape1(i).Left - 200 And Shape1(1).Top = Shape1(i).Top Then
Form1.initialize
Form1.outputmessage
Exit For
End If
Next i
End If
If Y(1) = -200 Then '蛇頭向上撞到自己
For i = 7 To s
If Shape1(1).Top = Shape1(i).Top + 200 And Shape1(1).Left = Shape1(i).Left Then
Form1.initialize
Form1.outputmessage
Exit For
End If
Next i
End If
If X(1) = -200 Then '蛇頭向左撞到自己
For i = 7 To s
If Shape1(1).Left = Shape1(i).Left + 200 And Shape1(1).Top = Shape1(i).Top Then
Form1.initialize
Form1.outputmessage
Exit For
End If
Next i
End If
End Sub
Public Sub strike_wall() '測試蛇頭是否撞到牆壁
If Shape1(1).Top < 0 Or Shape1(1).Top > Line1.Y1 - 200 Or Shape1(1).Left < 0 Or Shape1(1).Left > Form1.Width - 200 Then
Form1.outputmessage
Form1.initialize
End If
End Sub
Public Sub outputmessage() ' 游戲結束後的輸出信息
gameovermessage = "GAME OVER!"
dx = (8000 - TextWidth(gameovermessage)) / 2 '在窗體中間輸出"GAME OVER!"和得分
dy = (6000 - TextHeight(gameovermessage)) / 2
CurrentX = dx: CurrentY = dy
Form1.Print gameovermessage
scoremessage = "你的得分:" + Text1.Text
dx = (8000 - TextWidth(scoremessage)) / 2
dy = dy + TextHeight(scoremessage)
CurrentX = dx: CurrentY = dy
Form1.Print scoremessage
End Sub
Public Sub initialize() '游戲結束(失敗)後,游戲初始化函數
moveup = 0
movedown = 0
moveleft = 0
moveright = 0
u = 0: d = 0: l = 0: r = 0
Label5.Caption = "停止"
For i = 1 To s ' 初始化蛇的位置和狀態
Shape1(i).Left = 1200 + (6 - i) * 200
Shape1(i).Top = 5000
X(i) = 200
Y(i) = 0
Next i
If s > 6 Then
For i = 7 To s
Unload Shape1(i) '卸載多餘的shape,使初始的shape個數為六個
Next i
End If
'以下的這段是用來查看游戲初始化時的中的參數
'CurrentX = 0: CurrentY = 0
'Form1.FontSize = 10
'Print moveup: Print movedown: Print moveleft: Print moveright
'Print u: Print r: Print l: Print d
'For i = 1 To s
'Print X(i): Print Y(i)
'Next i
s = 6
Timer1.Enabled = False
gamebegin = False '游戲未開始
pause = False
HScroll1.Enabled = True
End Sub
Private Sub Command1_Click()
Timer1.Enabled = False
Dim r
r = MsgBox("你真的要退出嗎?", 33, "警告")
If r = 1 Then
Unload Form1
Else
Timer1.Enabled = True
End If
End Sub
Private Sub Form_KeyPress(keyascii As Integer)
If gamebegin = True And pause = False Then '只有游戲處於開始時方向鍵才有效
'下面四個if語句是蛇的方向控制函數
If keyascii = 119 Then
If Y(1) <> 200 Then '只有當蛇頭不正好向下運動時,按下向上才有效
moveup = 1 '向下上為w
End If
End If
If keyascii = 97 Then '向左為a
If X(1) <> 200 Then
moveleft = 1
End If
End If
If keyascii = 115 Then '向下為s
If Y(1) <> -200 Then
movedown = 1
End If
End If
If keyascii = 100 Then '向右為d
If X(1) <> -200 Then
moveright = 1
End If
End If
End If
If keyascii = 32 Then '判斷游戲是否在開始,按下空格鍵開始,否則按下空格鍵為暫停
If gamebegin = False Then
Timer1.Enabled = True
Label5.Caption = "開始"
Form1.Cls
score = 0
Text1.Text = Str$(score)
HScroll1.Enabled = False
gamebegin = True
Else
If pause = True Then '判斷暫停與否
Timer1.Enabled = True
Label5.Caption = "開始"
Else
Timer1.Enabled = False
Label5.Caption = "暫停"
End If
pause = Not pause
End If
End If
End Sub
Private Sub Form_Load() '對各參數的初始化
moveup = 0
moveleft = 0
moveright = 0
movedown = 0
u = 0: l = 0: d = 0: r = 0
s = 6 '蛇的初始長度
eatd = False
gamebegin = False
pause = False
speed = HScroll1.Value '初始速度
Label5.Caption = "停止"
Dim i
For i = 1 To s '蛇的初始運動方向
X(i) = 200
Y(i) = 0
Next i
Timer1.Enabled = False '沒開始游戲
Shape2.Left = 200 * Int(30 * Rnd) '貪吃蛇的食物的位置初始化
Shape2.Top = 200 * Int(30 * Rnd)
End Sub
Private Sub HScroll1_Change()
speed = HScroll1.Value
End Sub
Private Sub Timer1_Timer()
Timer1.Interval = 150 / speed '游戲速度
If movedown = 1 Then '按下下方向鍵,蛇向下轉向
d = d + 1
X(d) = 0: Y(d) = 200
If d = s Then
movedown = 0: d = 0
End If
End If
If moveup = 1 Then '按下向上方向鍵,蛇向上轉向
u = u + 1
X(u) = 0: Y(u) = -200
If u = s Then
moveup = 0: u = 0
End If
End If
If moveleft = 1 Then '向左
l = l + 1
X(l) = -200: Y(l) = 0
If l = s Then
moveleft = 0: l = 0
End If
End If
If moveright = 1 Then '向右
r = r + 1
X(r) = 200: Y(r) = 0
If r = s Then
moveright = 0: r = 0
End If
End If
Dim i '蛇的運動代碼
For i = 1 To s
Shape1(i).Left = Shape1(i).Left + X(i)
Shape1(i).Top = Shape1(i).Top + Y(i)
Next i
Form1.eat '調用過程eat(),判斷蛇是否吃了食物
If eatd = True Then
score = score + 5 * HScroll1.Value
Text1.Text = Str$(score)
Shape2.Left = 200 * Int(30 * Rnd) '如果食物被吃則隨機產生貪吃蛇的食物的位置
Shape2.Top = 200 * Int(30 * Rnd)
Shape2.FillColor = RGB(Int(255 * Rnd), Int(255 * Rnd), Int(255 * Rnd)) '隨機產生食物的顏色
If Shape2.FillColor = &H0& Then
Shape2.FillColor = RGB(100, 150, 200)
End If
lastx = X(s) '蛇吃到食物,lastx,lasty用來存放當前最後一個shape的運動狀態-
lasty = Y(s) '-以供設定新的shape運動狀態之用
s = s + 1
Load Shape1(s) '產生新的控制項shape1數組,使蛇的長度加長
Form1.ensure_state '調用設定新的shape控制項的運動狀態過程
Form1.ensure_position '設定新的shape1的位置
Shape1(s).Visible = True
eatd = False
End If
Form1.strike_oneself '測試游戲是否失敗的函數
Form1.strike_wall
End Sub
J. 求一個200行以上的Java小程序代碼
有個匿名網友的代碼,很好,很強大
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
class Calculator extends JFrame implements ActionListener {
private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",
"*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };
private final String[] COMMAND = { "Backspace", "CE", "C" };
private final String[] M = { " ", "MC", "MR", "MS", "M+" };
private JButton keys[] = new JButton[KEYS.length];
private JButton commands[] = new JButton[COMMAND.length];
private JButton m[] = new JButton[M.length];
private JTextField resultText = new JTextField("0");
private boolean firstDigit = true;
private double resultNum = 0.0;
private String operator = "=";
private boolean operateValidFlag = true;
public Calculator(){
super();
init();
this.setBackground(Color.LIGHT_GRAY);
this.setTitle("計算器");
this.setLocation(500, 300);
this.setResizable(false);
this.pack();
}
private void init() {
resultText.setHorizontalAlignment(JTextField.RIGHT);
resultText.setEditable(false);
resultText.setBackground(Color.WHITE);
JPanel calckeysPanel = new JPanel();
calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3));
for (int i = 0; i < KEYS.length; i++) {
keys[i] = new JButton(KEYS[i]);
calckeysPanel.add(keys[i]);
keys[i].setForeground(Color.blue);
}
keys[3].setForeground(Color.red);
keys[8].setForeground(Color.red);
keys[13].setForeground(Color.red);
keys[18].setForeground(Color.red);
keys[19].setForeground(Color.red);
JPanel commandsPanel = new JPanel();
commandsPanel.setLayout(new GridLayout(1, 3, 3, 3));
for (int i = 0; i < COMMAND.length; i++) {
commands[i] = new JButton(COMMAND[i]);
commandsPanel.add(commands[i]);
commands[i].setForeground(Color.red);
}
JPanel calmsPanel = new JPanel();
calmsPanel.setLayout(new GridLayout(5, 1, 3, 3));
for (int i = 0; i < M.length; i++) {
m[i] = new JButton(M[i]);
calmsPanel.add(m[i]);
m[i].setForeground(Color.red);
}
JPanel panel1 = new JPanel();
panel1.setLayout(new BorderLayout(3, 3));
panel1.add("North", commandsPanel);
panel1.add("Center", calckeysPanel);
JPanel top = new JPanel();
top.setLayout(new BorderLayout());
top.add("Center", resultText);
getContentPane().setLayout(new BorderLayout(3, 5));
getContentPane().add("North", top);
getContentPane().add("Center", panel1);
getContentPane().add("West", calmsPanel);
for (int i = 0; i < KEYS.length; i++) {
keys[i].addActionListener(this);
}
for (int i = 0; i < COMMAND.length; i++) {
commands[i].addActionListener(this);
}
for (int i = 0; i < M.length; i++) {
m[i].addActionListener(this);
}
}
public void actionPerformed(ActionEvent e) {
String label = e.getActionCommand();
if (label.equals(COMMAND[0])){
handleBackspace();
} else if (label.equals(COMMAND[1])) {
resultText.setText("0");
} else if (label.equals(COMMAND[2])){
handleC();
} else if ("0123456789.".indexOf(label) >= 0) {
handleNumber(label);
} else {
handleOperator(label);
}
}
private void handleBackspace() {
String text = resultText.getText();
int i = text.length();
if (i > 0) {
text = text.substring(0, i - 1);
if (text.length() == 0) {
resultText.setText("0");
firstDigit = true;
operator = "=";
} else {
resultText.setText(text);
}
}
}
private void handleNumber(String key) {
if (firstDigit) {
resultText.setText(key);
} else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)){
resultText.setText(resultText.getText() + ".");
} else if (!key.equals(".")) {
resultText.setText(resultText.getText() + key);
}
firstDigit = false;
}
private void handleC() {
resultText.setText("0");
firstDigit = true;
operator = "=";
}
private void handleOperator(String key) {
if (operator.equals("/")) {
if (getNumberFromText() == 0.0){
operateValidFlag = false;
resultText.setText("除數不能為零");
} else {
resultNum /= getNumberFromText();
}
} else if (operator.equals("1/x")) {
if (resultNum == 0.0){
operateValidFlag = false;
resultText.setText("零沒有倒數");
} else {
resultNum = 1 / resultNum;
}
} else if (operator.equals("+")){
resultNum += getNumberFromText();
} else if (operator.equals("-")){
resultNum -= getNumberFromText();
} else if (operator.equals("*")){
resultNum *= getNumberFromText();
} else if (operator.equals("sqrt")) {
resultNum = Math.sqrt(resultNum);
} else if (operator.equals("%")){
resultNum = resultNum / 100;
} else if (operator.equals("+/-")){
resultNum = resultNum * (-1);
} else if (operator.equals("=")){
resultNum = getNumberFromText();
}
if (operateValidFlag) {
long t1;
double t2;
t1 = (long) resultNum;
t2 = resultNum - t1;
if (t2 == 0) {
resultText.setText(String.valueOf(t1));
} else {
resultText.setText(String.valueOf(resultNum));
}
}
operator = key;
firstDigit = true;
operateValidFlag = true;
}
private double getNumberFromText() {
double result = 0;
try {
result = Double.valueOf(resultText.getText()).doubleValue();
} catch (NumberFormatException e){
}
return result;
}
public static void main(String args[]) {
Calculator calculator1 = new Calculator();
calculator1.setVisible(true);
calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}