赛程源码
① 跪求 VB 课程设计 高手
学生档案管理系统 vb
——————————————附录程序清单及注释
程序清单6.1
Option Explicit
Dim Fi
leName As String '文件名,用于打开、保存文件
Dim UndoString As String '用于 Undo 操作
Dim UndoNew As String '用于 Undo 操作
Private Sub ImgUndoDisable()
'禁用“Undo”按钮
UndoString = ""
UndoNew = ""
ImgUndo.Enabled = False
ImgUndo.Picture = ImageDisable.ListImages("Undo").Picture
End Sub
Private Sub ImgUndoEnable()
'有效“Undo”按钮
ImgUndo.Enabled = True
ImgUndo.Picture = ImageUp.ListImages("Undo").Picture
End Sub
Private Sub Check_ImgPaste()
'设置粘贴按钮
If Len(Clipboard.GetText) > 0 Then
ImgPaste.Enabled = True
ImgPaste.Picture = ImageUp.ListImages("Paste").Picture
Else
ImgPaste.Enabled = False
ImgPaste.Picture = ImageDisable.ListImages("Paste").Picture
End If
End Sub
Private Sub Check_ImgCutCopy()
'设置剪切、复制按钮
If Text1.SelLength > 0 Then
ImgCut.Enabled = True
ImgCut.Picture = ImageUp.ListImages("Cut").Picture
ImgCopy.Enabled = True
ImgCopy.Picture = ImageUp.ListImages("Copy").Picture
Else
ImgCut.Enabled = False
ImgCut.Picture = ImageDisable.ListImages("Cut").Picture
ImgCopy.Enabled = False
ImgCopy.Picture = ImageDisable.ListImages("Copy").Picture
End If
End Sub
Private Sub BackColor_Click()
CommonDialog1.ShowColor
Text1.BackColor = CommonDialog1.Color
End Sub
Private Sub Box_Click()
'显停工具栏
If Box.Checked Then
'将停显工具栏
Box.Checked = False
CoolBar1.Visible = False
Else
Box.Checked = True
CoolBar1.Visible = True[NextPage]
End If
Form_Resize '重新调整控件位置
End Sub
Private Sub Close_Click()
Dim FileNum As Integer
If Len(FileName) > 0 Then
'有输入文件名
FileNum = FreeFile() '获得可用文件号
Open FileName For Output As FileNum '打开输出文件
'如果无指定文件,则创建新文件
Print #FileNum, Text1.Text '输出文本
Close FileNum '关闭文件
End If
Text1.Text = ""
FileName = ""
End Sub
Private Sub ComboSize_Click()
Text1.FontSize = Val(ComboSize.Text)
End Sub
Private Sub ComboFont_Click()
Text1.FontName = ComboFont.Text
End Sub
Private Sub Copy_Click()
Clipboard.SetText Text1.SelText '复制文本到剪裁板
End Sub
Private Sub Cut_Click()
Clipboard.SetText Text1.SelText '复制文本到剪裁板
Text1.SelText = "" '清选择的文本
End Sub
Private Sub DataTime_Click()
Text1.SelText = Now
End Sub
Private Sub Delete_Click()
Text1.SelText = "" '清选择的文本
End Sub
Private Sub Edit_Click()
'当程序显示“编辑”子菜单前,触发该程序
If Text1.SelLength > 0 Then
'文本框中有选中的文本
Cut.Enabled = True
Copy.Enabled = True
Delete.Enabled = True
Else
Cut.Enabled = False
Copy.Enabled = False
Delete.Enabled = False
End If
If Len(Clipboard.GetText()) > 0 Then
'剪裁板中有文本数据
Paste.Enabled = True
Else
'没有可粘贴的文本
Paste.Enabled = False
End If
End Sub
Private Sub Exit_Click()
Unload Me
End Sub
Private Sub FindText_KeyPress(KeyAscii As Integer)
Dim BeginPos As Long
If KeyAscii = 13 Then
BeginPos = InStr(1, Text1.Text, FindText.Text, vbTextCompare)
If BeginPos > 0 Then
Text1.SelStart = BeginPos - 1
Text1.SelLength = Len(FindText.Text)
End If
End If
End Sub
Private Sub Fontcolor_Click()
CommonDialog1.ShowColor
Text1.ForeColor = CommonDialog1.Color
End Sub
Private Sub Form_Load()
Dim i As Integer
'加载图像
ImgNew.Picture = ImageUp.ListImages("New").Picture
ImgOpen.Picture = ImageUp.ListImages("Open").Picture
ImgSave.Picture = ImageUp.ListImages("Save").Picture
ImgUndo.Picture = ImageDisable.ListImages("Undo").Picture
Check_ImgPaste
Check_ImgCutCopy
'加载系统字体
For i = 0 To Screen.FontCount - 1
ComboFont.AddItem Screen.Fonts(i)
Next i
End Sub
Private Sub Form_Resize()
Dim TextTop As Long
'修改工具条大小
CoolBar1.Top = Me.ScaleTop
Me.ScaleLeft
Text1.Width = Me.ScaleWidth
If Me.ScaleHeight > CoolBar1.Height Then
Text1.Height = Me.ScaleHeight - TextTop
Else
Text1.Height = 0
End If
End Sub
Private Sub ImgCopy_Click()
Copy_Click '复制
Check_ImgPaste
Check_ImgCutCopy
End Sub
Private Sub ImgCopy_MouseDown(Button As Integer, Shift As Integer,
X As Single, Y As Single)
'“按下”按钮
If Button = 1 Then
ImgCopy.Picture = ImageDown.ListImages("Copy").Picture
End If
End Sub
Private Sub ImgCopy_MouseMove(Button As Integer, Shift As Integer,
X As Single, Y As Single)
Label1 = "将选择的文本复制到剪裁板"
'判断鼠标位置,显示不同图像
If Button = 1 And (X > 0 And X < ImgNew.Width And Y > 0 And Y <
ImgNew.Height) Then
ImgCopy.Picture = ImageDown.ListImages("Copy").Picture[NextPage]
ElseIf Button = 1 Then
ImgCopy.Picture = ImageUp.ListImages("Copy").Picture
End If
End Sub
Private Sub ImgCopy_MouseUp(Button As Integer, Shift As Integer, X
As Single, Y As Single)
If Button = 1 Then
'“抬起”按钮
ImgCopy.Picture = ImageUp.ListImages("Copy").Picture
End If
End Sub
Private Sub ImgCut_Click()
'If Text1.SelLength > 0 Then
Cut_Click '剪切
Check_ImgPaste
Check_ImgCutCopy
'End If
End Sub
Private Sub ImgCut_MouseDown(Button As Integer, Shift As Integer,
X As Single, Y As Single)
If Button = 1 Then
'“按下”按钮
ImgCut.Picture = ImageDown.ListImages("Cut").Picture
End If
End Sub
Private Sub ImgCut_MouseMove(Button As Integer, Shift As Integer,
X As Single, Y As Single)
Label1 = "剪切选择的文字到剪裁板"
'判断鼠标位置,显示不同图像
If Button = 1 And (X > 0 And X < ImgNew.Width And Y > 0 And Y <
ImgNew.Height) Then
ImgCut.Picture = ImageDown.ListImages("Cut").Picture
ElseIf Button = 1 Then
ImgCut.Picture = ImageUp.ListImages("Cut").Picture
End If
End Sub
Private Sub ImgCut_MouseUp(Button As Integer, Shift As Integer, X
As Single, Y As Single)
If Button = 1 Then
'“抬起”按钮
ImgCut.Picture = ImageUp.ListImages("Cut").Picture
End If
End Sub
Private Sub ImgNew_Click()
New_Click
End Sub
Private Sub ImgNew_MouseDown(Button As Integer, Shift As Integer,
X As Single, Y As Single)
If Button = 1 Then
'“按下”按钮
ImgNew.Picture = ImageDown.ListImages("New").Picture
End If
End Sub
Private Sub ImgNew_MouseMove(Button As Integer, Shift As Integer,
X As Single, Y As Single)
Label1 = "创建新文件" '修改提示信息
'判断鼠标位置,显示不同图像
If Button = 1 And (X > 0 And X < ImgNew.Width And Y > 0 And Y <
ImgNew.Height) Then
ImgNew.Picture = ImageDown.ListImages("New").Picture
ElseIf Button = 1 Then
ImgNew.Picture = ImageUp.ListImages("New").Picture
End If
End Sub
Private Sub ImgNew_MouseUp(Button As Integer, Shift As Int
eger, X As Single, Y As Single)
If Button = 1 Then
'“抬起”按钮
ImgNew.Picture = ImageUp.ListImages("New").Picture
End If
End Sub
Private Sub ImgOpen_Click()
Open_Click
End Sub
Private Sub ImgOpen_MouseDown(Button As Integer, Shift As Integer,
X As Single, Y As Single)
'“按下”按钮
If Button = 1 Then
ImgOpen.Picture = ImageDown.ListImages("Open").Picture
End If
End Sub
Private Sub ImgOpen_MouseMove(Button As Integer, Shift As Integer,
X As Single, Y As Single)
Label1 = "选择文件名并打开文件"
'判断鼠标位置,显示不同图像
If Button = 1 And (X > 0 And X < ImgNew.Width And Y > 0 And Y <
ImgNew.Height) Then
ImgOpen.Picture = ImageDown.ListImages("Open").Picture
ElseIf Button = 1 Then
ImgOpen.Picture = ImageUp.ListImages("Open").Picture
End If
End Sub
Private Sub ImgOpen_MouseUp(Button As Integer, Shift As Integer, X
As Single, Y As Single)
If Button = 1 Then
'“抬起”按钮
ImgOpen.Picture = ImageUp.ListImages("Open").Picture
End If
End Sub
Private Sub ImgPaste_Click()
Paste_Click '粘贴
End Sub
Private Sub ImgPaste_MouseDown(Button As Integer, Shift As
Integer, X As Single, Y As Single)
If Button = 1 Then
'“按下”按钮
ImgPaste.Picture = ImageDown.ListImages("Paste").Picture[NextPage]
End If
End Sub
Private Sub ImgPaste_MouseMove(Button As Integer, Shift As
Integer, X As Single, Y As Single)
Label1 = "粘贴文本到当前光标位置"
'判断鼠标位置,显示不同图像
If Button = 1 And (X > 0 And X < ImgNew.Width And Y > 0 And Y <
ImgNew.Height) Then
ImgPaste.Picture = ImageDown.ListImages("Paste").Picture
ElseIf Button = 1 Then
ImgPaste.Picture = ImageUp.ListImages("Paste").Picture
End If
End Sub
Private Sub ImgPaste_MouseUp(Button As Integer, Shift As Integer,
X As Single, Y As Single)
If Button = 1 Then
eName For Output As FileNum '打开输出文件
'如果无指定文件,则创建新文件
Print #FileNum, Text1.Text '输出文本
Close FileNum '关闭文件
ImgUndoDisable
Else
MsgBox "不能保存无名文件" + Chr(13) + Chr(10) + "请选择“文件”菜单
的“保存”项", , "警告"
End If
End Sub
Private Sub ImgSave_MouseDown(Button As Integer, Shift As Integer,
X As Single, Y As Single)
If Button = 1 Then
ImgSave.Picture = ImageDown.ListImages("Save").Picture
End If
End Sub
Private Sub ImgSave_MouseMove(Button As Integer, Shift As Integer,
X As Single, Y As Single)
Label1 = "保存当前文件"
'判断鼠标位置,显示不同图像
If Button = 1 And (X > 0 And X < ImgNew.Width And Y > 0 And Y <
ImgNew.Height) Then
ImgSave.Picture = ImageDown.ListImages("Save").Picture
ElseIf Button = 1 Then
ImgSave.Picture = ImageUp.ListImages("Save").Picture
End If
Private Sub ImgUndo_MouseMove(Button As Integer, Shift As Integer,
X As Single, Y As Single)
Label1 = "取消当前操作"
'判断鼠标位置,显示不同图像
If Button = 1 And (X > 0 And X < ImgNew.Width And Y > 0 And Y <
ImgNew.Height) Then
ImgUndo.Picture = ImageDown.ListImages("Undo").Picture
ElseIf Button = 1 Then
ImgUndo.Picture = ImageUp.ListImages("Undo").Picture
End If
End Sub
Private Sub ImgUndo_MouseUp(Button As Integer, Shift As Integer, X
As Single, Y As Single)
If Button = 1 Then
'“抬起”按钮
ImgUndo.Picture = ImageUp.ListImages("Undo").Picture
End If
End Sub
Private Sub New_Click()
FileName = ""
Text1 = ""
ImgUndoDisable
End Sub
Private Sub Open_Click()
Dim FileNum As Integer
Dim buffer As String
Dim buffer1 As String
Dim FileSize As Long
Dim MaxLen As Long
MaxLen = 32768 '文件最大长度
CommonDialog1.ShowOpen '显示"打开文件"对话框
If Len(CommonDialog1.FileName) > 0 Then
'有输入文件名
FileName = CommonDialog1.FileName '保存文件名
FileSize = FileLen(FileName) '获得文件长度
If FileSize > MaxLen Then[NextPage]
'文件超长
MsgBox "该文件过大,只能显示部分文本", , "警告"
Exit Sub
End If
Screen.MousePointer = 11 '设置鼠标为沙漏
FileNum = FreeFile() '获得可用文件号
Open FileName For Input As FileNum '以顺序输入方式打开文件
Do While Not EOF(FileNum) And Len(buffer) < MaxLen '读必须文本小于
32K
Line Input #FileNum, buffer1 '读一行文字
buffer = buffer + buffer1 + Chr(13) + Chr(10) '加入回车换行符
Loop '循环体
Close FileNum '关闭文件
ImgUndoDisable '取消 Undo 功能
Text1.Text = buffer '显示文本
UndoNew = buffer '保存文本
buffer = "" '释放内存
buffer1 = ""
Screen.MousePointer = 0 '恢复鼠标指针
Me.Caption = "记事本 - " + FileName '修改标题显示
End If
End Sub
Private Sub Paste_Click()
Text1.SelText = Clipboard.GetText
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As
Integer, X As Single, Y As Single)
Label1 = "工具栏"
End Sub
Private Sub Picture1_Resize()
If Picture1.Width > Label1.Left Then
Label1.Width = Picture1.ScaleWidth - Label1.Left
End If
End Sub
Private Sub Save_Click()
Dim FileNum As Integer '文件句柄号
CommonDialog1.ShowSave '显示保存对话框
If Len(CommonDialog1.FileName) > 0 Then
'有输入文件名
FileName = CommonDialog1.FileName '保存文件名
FileNum = FreeFile() '获得可用文件号
Open FileName For Output As FileNum '打开输出文件
'如果无指定文件,则创建新文件
Print #FileNum, Text1.Text '输出文本
Close FileNum '关闭文件
Me.Caption = "记事本 - " + FileName '修改标题显示
ImgUndoDisable
End If
End Sub
Private Sub Text1_Change()
If Not ImgUndo.Enabled Then
'使“Undo”按钮可用
ImgUndoEnable
End If
UndoString = UndoNew
UndoNew = Text1
End Sub
Private Sub Text1_Click()
Check_ImgCutCopy
End Sub
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Check_ImgCutCopy
End sub
End Sub
Private Sub ImgSave_MouseUp(Button As Integer, Shift As Integer, X
As Single, Y As Single)
If Button = 1 Then
'“抬起”按钮
ImgSave.Picture = ImageUp.ListImages("Save").Picture
End If
End Sub
Private Sub ImgUndo_Click()
Text1.Text = UndoString
End Sub
Private Sub ImgUndo_MouseDown(Button As Integer, Shift As Integer,
X As Single, Y As Single)
If Button = 1 Then
'“按下”按钮
ImgUndo.Picture = ImageDown.ListImages("Undo").Picture
End If
End Sub
② 开发一个视频直播APP要多少钱
1、直播APP开发成本,跟其他定制类APP软件开发不同,很多公司会用诸如 15000/人/月,3人,3月的方式来计算。
2、以这个直播项目为例,在这个直播App的报价产出的过程中,各个功能全定制化,加上3个重点需求难点,从产品、设计到最后开发都有团队全程参与,最终开发一个这样的App的费用定价是在30万左右,而在确定启动这个项目后,随着更加深入的细节交流。从5万—50万不等。
为什么会出现价格区间如此悬殊的报价
1、传统的软件开发外包公司,人力型行业, 一方面通过疯狂的项目数量上的积累以及降低人员成本来获得利润,而另一方面的限制于它的工作性质很难吸引到优质的技术人才加入。
2、这就是大家对这个行业吐槽的真正原因,农贸市场式的良莠不齐,以上是一个APP的报价流程以及对于开发团队方面的一些分析。
3、对于项目的时间估期以及总费用这一块,不同的团队预估以及成本会有所不同,直播APP开发的成本,有高有低,对于价格是一方面,其实最重要是选择一家售前放心售后完善软件开发公司。
4、据我说知,一家靠谱的APP开发公司,必定有自己的专业技术团队。比如这家,我也线下考察过,程序开发人员接近80多人。听朋友介绍,从阿里系、网络系、头条系的有27名。足矣可 见,公司的人员的强悍。
③ 用C语言编比赛赛程
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。
2.程序源代码:
main()
{
char i,j,k;/*i是a的对手,j是b的对手,k是c的对手*/
for(i='x';i<='z';i++)
for(j='x';j<='z';j++)
{
if(i!=j)
for(k='x';k<='z';k++)
{ if(i!=k&&j!=k)
{ if(i!='x'&&k!='x'&&k!='z')
printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);
}
}
}
}
④ 开发一个直播APP要多久
开发一个APP的价格和时间取决于产品功能的复杂程度。
常见的APP,价格、开发时间、后期维护信息如下:
1、价格行情:1万~10万之间
APP系统包括苹果iOS、安卓手机。
2、开发时间:1周~1.5个月之间
如前所述,需要看产品功能复杂度。
3、后期维护:看APP类型
根据APP类型不同有所差异,如果是新闻资讯、企业官网类APP,后期维护比较容易,工作其实主要是内容运营;如果是社交类APP,后期维护升级比较多,或者说功能需要不断升级。
启汇网络APP开发团队给予专业的开发建议是需要看想做的APP功能是什么样的,然后再做判断。
⑤ 2009年软件大赛
2009年第一届“中科杯”全国软件设计大赛(参赛截止:2009-5-31)
关于组织首届“中科杯”全国软件设计大赛的函
软组函[2009]1号
各有关高等学校、科研院所:
“中科杯”全国软件设计大赛组委会受中国软件行业协会和中国科学院软件研究所的委托,于2009 年4 月至2009 年9 月底负责组织首届“中科杯”全国软件设计大赛,现将有关事项函告如下:
一、大赛主旨
首届“中科杯”全国软件设计大赛是中国软件行业协会和中国科学院软件研究所主办的公益性质的全国性科技竞赛,其主旨是:正确引导我国在校的青年学子积极参加科技竞技活动,不断培养创新精神和团队意识,切实增强理论联系实际的能力,通过富有自由、开放、创新精神的软件设计大赛,为广大青年学子提供一个提高自我、展示才华的舞台,为我国民族软件行业发掘和培养更多的优秀青年人才。
二、大赛组织
为保障首届“中科杯”全国软件设计大赛顺利开展,大赛成立指导委员会、专家评审委员会和组织委员会。指导委员会和专家评审委员会全面负责大赛的命题和评审,组织委员会负责大赛的组织、宣传、协调工作。中国科学院院士董韫美、周巢尘、林惠民和中国软件行业协会理事长陈冲、中国科学院软件研究所所长李明树等担任指导委员会委员,北京大学、北京理工大学、北京邮电大学、哈尔滨工业大学、华中科技大学、清华大学、南京大学、武汉大学、西北工业大学、厦门大学、中国科技大学、中南大学、中科院计算所、中科院自动化所、中科院网络中心等高校和科研院所专家指导或研究生会(学生会)协办。各委员会详细名单参见大赛官方网站。
三、赛制赛程
1、2009 年4 月29 日下午,大赛主办方召开新闻发布会,通过媒体正式发布大赛新闻。
2、2009 年4 月29 日至2009 年5 月31 日,我国大陆和港澳台地区的在校青年学生自由组队(每队最多由3 人组成),登陆大赛官方网站(http://cscup.iscas.ac.cn)在线报名。
3、各参赛队在2009 年8 月1 日前提交中期报告。
4、各参赛队在2009 年9 月1 日前提交作品终稿,包括可执行程序、源代码以及相关文档(如概要设计、详细设计、用户说明书等),不提交详细文档的作品默认为弃权。
5、大赛评委对提交的作品进行初审,筛选出约50 件作品,于2009 年9 月3 日至2009 年9 月9 日期间在大赛官方网站进行展示。
6、参考浏览者的评论和投票情况,大赛评委在2009 年9 月15 日前,对参与展示的作品进行二次评审,遴选出约20 件优秀作品进入决赛。
7、进入决赛的参赛队,于2009 年9 月15 日在中国科学院软件研究所进行作品展示和现场答辩,大赛评委评选出最终获奖作品,并举行颁奖仪式。
四、试题和评审
大赛针对面向大众、系统、企业三种不同的软件需求,分别选取三个主题作为大赛试题:
主题一、展现软件技术的科普作品设计与制作
主题二、移动互联网设备游戏设计
主题三、基于开源软件的应用软件架构设计与实践
以上各主题均赋予了参赛选手充分的自由发挥空间,各参赛队可任选一个主题,独立设计完成一个具有创新性和实用性的应用系统或软件架构。为更大程度地鼓励创意和创新,参赛选手亦可结合自身的技术特长,选择其它主题的作品参加大赛。
大赛作品的评审由大赛专家评审委员会完成,注重作品的创新性、实用性、技术实现难度、设计的合理性、稳定性、表现形式、答辩表现、网络投票与评论等。
有关大赛试题和评审的详细信息可登陆大赛官方网站查看。
五、奖励方案
本次大赛奖励由两部分组成:
1、奖项设置:
特等奖1 个,奖金20000 元,并颁发证书和“中科杯”
一等奖2 个,奖金10000 元,并颁发证书
二等奖3 个,奖金5000 元,并颁发证书
三等奖5 个,奖金3000 元,并颁发证书
入围奖若干,价值100 元的FashionFree 卡,并颁发证书
2、免试条款:
在本次大赛中获得特等级和一等奖的团队成员,如果获得所在学校的推免生资格,经学校推荐,将优先拟录取为中科院软件所2010 年攻读硕士学位研究生。
六、大赛经费
1、本次大赛的组织和奖励经费由中科方德软件有限公司和中科软科技股份有限公司共同赞助。
2、各参赛队不需要缴纳任何报名费和评审费。
3、对入围决赛的参赛队,大赛组委会负责报销往返路费。
七、联系方式
大赛官方网站:http://cscup.iscas.ac.cn
电子邮箱: [email protected]
在线咨询: [email protected] (MSN)
传真:010—62562533
电话:010—62661111
单位地址:北京市海淀区中关村南四街4号,中国科学院软件研究生
通讯地址:北京8718信箱,100190
联系人:陈柏强(13910639853)
特此函告,请大力支持!
该信息来源于赛才网。
更多比赛,可以登陆赛才网查看。
⑥ 小于div什么意思
那是他网站代码除了问题!
div是网页中的一种布局模式!
⑦ 足球经理的FM系统
Football Manager(以下简称FM)系列作为足球经理游戏界的龙头老大(虽然此界中也没几款作品),当得起“艺术”二字。
1984年,Kevin Toms在一个名为ZX Spectrum的游戏平台(慢说如今,便是当时也没几人知道的一个平台)上画了一个圈,创造了我们所知的第一款足球经理游戏。1992年,英国人Paul以及Oliver Collyer 两兄弟蹲在他们的卧室里捣鼓出了一款PC平台上的足球经理游戏,Championship Manager(以下简称CM,要特别注意的是,2004年后的CM与本文提及的CM/FM没有任何关联,因为其开发人员、游戏源代码、引擎技术、球员数据等等游戏设计采用的都是另外一种理念,04年后的FM就是04年前CM),这便是后来风靡全球的CM/FM系列(下文统称为FM系列)的老祖宗。
1993到现在已然17个年头了,时代在变迁,FM系列也一直在变迁,后人们无缘经历FM曾经的传奇和历史,便只能从字里行间去感受FM的风骨。
扑街的游戏各有各的雷点,成功的游戏各有各的卖点。但是成功的游戏系列,无一不经过沉浮起落,也只有遍尝大红大紫与失败潦倒的滋味,不断向上爬向前摸索,才能铸造出经典。FM系列的17年,也逃不脱这样一个沉浮起落的循环。
大多数系列游戏诸如Tomb Raider、Need For Speed、Call Of Duty等等,其发展都是遵循第一代名声大噪,其后几代良莠不齐偶见精品的生长规律,也就是说,大多数系列游戏都有一个成长期、探索期、成熟期、黄金期的发展过程。
而FM系列却是与此不同,自成一家。
下文将会以此入手,把FM历代划分4个时段,一一细数FM历代的引擎特点与战术理念设计变迁。 FM的孕育期
有点资历的老游戏玩家回忆起1993,一定会想起当时红遍天下的横版Prince Of Persia,或者Sid Meier大师的惊世神作Sid Meier’s Civilization,;有点资历的球迷回忆起1993年,应该会想起巴乔两度加冕世界足球先生,或者马赛在欧冠决赛击败米兰陷入贿赂丑闻,也可能会缅怀起那一年过世的英格兰史上第一后卫Bobby Moore。而作为准90后的楼主,1993的时候,还穿着开裆裤,噢不,应该是赤裸着下体满街跑然后跌个狗吃屎……
但不管是玩家,还是球迷,或者楼主,有关1993的记忆里都不会存在FM这个词。
FM系列的前四代,就是在这环境中默默地孕育着。
1993年,Collyer兄弟在伦敦注册了一家名为Sports Interactive(以下简称SI)的公司。 并在原始CM的基础上进行加工,开发出了当时默默无闻的CM 1993。
这里插播一个趣闻,为什么我们要从CM93而非CM Original开始讲起,盖因CMO采用的设计语言是BASIC,其糟糕的平台兼容性以及多如牛毛到令人发指的bug,除了花就是绿的画面,球员全部随机并以号码为名,比赛模拟偶见无厘头计算方式等等问题,据说让Collyer兄弟回忆起往昔时常掩面泪奔。
CM93继承了CMO比赛引擎、球员属性加权计算进行评级等等当时领先整个业界的设计理念的同时,开始第一次引入界面设计、球员真实化、多联赛并行等等设定。虽然仅仅对皇马球员进行了真实化,但是从引入比赛过程中受伤、同步现实联赛赛程、丰富球员转会谈判内容等等措施中都可以察觉到一点端倪,那就是从CM93开始,SI比其他的开发小组更早地确立了她后来赖以统治整个业界的设计思想——真实化。而这也是为什么我们更愿意把CM93作为FM系列起点的根本原因。
从一开始SI就显露出了王的资质,她比同期其他足球经理游戏的开发小组更富想象力,更富市场前瞻力,即使那时的SI只有2个人。我们有理由去臆测这两兄弟是否未来帝,或者章鱼哥(P.S. 章鱼哥也叫Paul)。
SI在93、94两年,陆续推出了3张磁盘作为CM 93的追加磁盘,用于更新游戏中球员数据、联赛赛程、游戏引擎等内容,这也就是后世的补丁。这个想法领先业界起码3年。而那会的大部分游戏开发商甚至都还没有后续服务的概念。后来的FM系列是不管第几代,推出更新补丁这个良好习惯一直被保留了下来,也一直是玩家们所热衷的话题之一。
CM93的时代太过遥远,也因为足球经理游戏在那个年代缺乏关注,其游戏引擎到底如何已经不可考了,但是据收集到的一些资料来看,CM93引擎最大的特点就是,没有特点。因为比赛模拟文字描述太过单一,玩家无法从游戏运行过程中寻觅到规律,比赛中可用的战术调整总的来说就是三个——加强进攻、加强防守以及换人,也无法从胜负关系中察觉到除了球员外能影响比赛进程的因素。因而只能说,比赛引擎跟当时另外两款作品(Premier Manager和The Manager)几乎没区别,也就是毫无特点。至于游戏的战术理念,只能叹一句“噢买尬”,只有两个人的SI根本不敢考虑除了比赛模拟之外的其他事情。
不管从哪个方面来看,CM93都是成功的,她用真实化成功吸引了第一批拥趸去掏钱,然后,后人们应该感谢93年的人们,不要求试玩,不稀罕盗版,没喷子,没五毛,才能让SI赚到俩小钱,去开创FM事业。
Collyer兄弟应该感到庆幸,他们在推出第二代FM——CM 2时刚巧是1995年。如果不是刚刚结束的世界杯抵消了众多买了这款作品的球迷的不满,CM 2一定会扑街。(邪恶臆测:也许CM 2从94跳票到95年也是这原因?)
CM 2比之CM 93几乎就是一个简单的升级包,除了在CM 93的基础上像大部分游戏厂家做的那样使用了新的技术更新了一下画面——然而,你们懂的,FM玩的本来就不是画面,允许并行的联赛数量增加了以及推出多语言版本之外,毫无亮点。至于新加入的语音评论代替文字描述这个功能,拜托了,SI自己都不好意思再提,让游戏的运行和比赛模拟速度降低了一个平方的设计就是一个鸡肋。作为一款续作,CM 2是不成功的,但是作为一款商品,CM 2却是巨成功的。CM 2的开发没有花费多少资金,同时因为推出多语言版本反而让她被全欧洲的球迷所认识。SI挖到了第一桶金,走出了成名的第一步。(小编再次邪恶臆测:也许CM 2的开发初衷就是为了敛财? )
Collyer兄弟翻着账本的时候一定松了一口气,他嘀的终于有奶粉钱招兵买马养FM这个胖娃了。
1996年,CM 96的诞生告诉了我们有钱有人的SI会爆发出怎样一种能量。
刚打开游戏的时候,你会觉得这游戏可能要扑街,因为看起来她跟CM 2几乎一样,这可是两年时间啊,居然没一点变化?
但是当你进入到比赛模拟阶段,你会被感动得泪流满面,因为比赛开始变得不可控制。
这绝对不是反话,足球比赛之所谓为比赛,就是因为他不可控制也不是简单的堆球员。足球比赛是球员技术的较量,但又是教练战术的博弈,同时也是哪边RP更好的比拼,这三者凑到一起,于是就有了那些传世经典的足球比赛。
从CM 96开始,AI(人工智能,比赛引擎属于AI的一部分)的影响开始无处不在,不管是交易球员,还是战术针对性,又或者场上偶见的一些失误,更为难得的是,CM 96对比赛调整功能进行了扩充,而且AI也终于能针对你做出的调整做出反应了。
总的来说,CM 96对AI做出的改动其实不多,只是增强了其对玩家操作的互动以及对联赛规则、球员交易规则真实化。再加上CM96的全名是CM2:96/97赛季,所以在那个年代许多不明真相的媒体都认为96就是CM 2的又一个升级包。
但只要是那个年代FM的玩家都知道,同时多年过去了再回首,才发现FM正是从CM 96开始学会行走,一步一步向今天蹒跚而来。
1997年对于SI来说,从她发行了CM 97开始,注定是个不平凡的年份。而CM 97的叫好叫座(1997年英国本土销售冠军)对她耳语:冷静下来,不要激动,全世界的目光即将汇聚到你身上。
跟CM 96一样,刚打开97的游戏时,你会再次认为这游戏要悲剧。
一样啊,游戏引擎、游戏画面完全一样啊!
跟CM9 6一样,当你玩过了97以后,你会再次被游戏感动得流泪。
97与96之间,只有三个变化。
第一,CAPA(能力与潜能)这个最核心的球员属性,第一次被引入到了FM系列当中;
第二,数据库编辑器这个最牛逼的修改器,第一次被引入到FM系列当中;
第三,全部球星实名制,第一次被引入到FM系列当中。
你还能要求什么?
有读者说,我要求画面和声效!
然而,你懂的,FM玩的本来就不是画面。
然后,更重要的是,CM 93到97的游戏画面几乎没有改变过,除了背景贴图,就是贴图背景,这也是那四年的CM饱受诟病的一大弱点,年轻一点的 FMer见了必然会直呼“雅蠛蝶”,故在此按下不表。
至于声效……FM此物有声效的吗?
如果您实在忍受不了低画质低音质,出门左转,PES和FIFA在招手微笑~~
93-98的5年间,SI一步一步创建起了FM系列的一切核心要素,球员真实化,赛程与现实同步,多联赛并行,巨大的可选数据库,数据库编辑器,游戏引擎,CAPA的设置,比赛战术的模拟。
她出生了,她长大了。然后,她平静的站在帷幔下,阴影里,调整着自己的呼吸,听着观众席的欢呼,看着灯光渐渐黯淡下来的舞台,从嘴角抿出一丝微笑,然后,准备粉墨登场。
FM的黄金期
电子游戏从哪一年诞生已经很难查证了,但几乎所有的游戏玩家都不能忘却99年留给自己的美好回忆。那个时代,Tomb Raider艳绝江湖,Counter-Strike雄霸武林,Age of Empires横扫六合,Star Craft君临天下。
1999对于许多游戏制造商来说,那是许多段传奇的时光,因为win98对DOS的改革为游戏设计带来了更多的可能性。然而对于更多的游戏制造商来说,那是他们苦难的岁月,因为他们没钱没技术没创意去紧跟时代的步伐。
当时,所有的媒体和玩家都被更具操作性、画面更加绚丽的游戏蒙蔽了眼睛,在他们眼中没有画面只有枯燥的文字,没有操作只有简单的鼠标点击,没有联动只有一个人枯坐显示器前的游戏,统统都是垃圾。
于是,顺理成章的,刚刚有了一点名气的FM也随之立即成为许多游戏媒体口诛笔伐、明嘲暗讽的对象,甚至直接就可以收录进牛津词典作为“垃圾”一词的另外一种拼法。
1998年的时候SI(其实早在1995年SI与Edios合并成了Edios Interactive,但实际上游戏的设计一直由SI员工进行,故本文一直使用SI)本该趁着CM 97的大红大紫推出续作,然后她却无端端沉寂了。于是疯狂的媒体爽了,他们觉得SI就是一只纸老虎,已经被市场的趋向吓坏了,自动自觉退出了竞争。
恩,这是技术游戏的胜利,这是艺术游戏的胜利,这是华丽游戏的胜利!
FM这种枯燥乏味功利保守的杂念,玩蛋去吧!
楼主很喜欢看冠军教父,楼主很喜欢的托尼·唐恩说过,抽别人耳光的感觉一定很爽。
99年3月,SI无声无息推出系列中跨世代的第五作,CM 3。
如果不是光盘包装上醒目的Edios Interactive商标,刚打开CM 3的时候,一定会有许多人以为这跟前几作是不同公司发行完全不同的两款游戏。简直不在一个层次啊!
简约朴素、在未来沿用10年之久的左右侧树形菜单,一改前几作游戏界面的混乱;全新的数据后台处理机制,让游戏运行速度上了两个台阶;可供选择大小的数据库,高达2万5千名的球员、职员数量,直逼前作的3倍;全货币、货币价值真实化,青年队和预备队联赛的引入,联赛、杯赛数量的扩充,联赛并行数量提升到15个,让FM系列在真实化道路上的脚步更加坚实;而FM系列核心元素之一——联机系统也从CM 3开始引入,虽然当时只能允许局域网内联机,但也让玩家们初次享受到互爆菊花的快活。
SI得意地笑,这个耳光,抽得你们爽不爽?
喷子们翻翻白眼,好吧,直观表现力上是有了长足的进步,但是啊,还不够还不够,这样的CM 3充其量就是个“精品”,“大作”?你才刚上路呢!
Collyer兄弟笑,得意地笑。
你当咱是仙剑二血狮啊?仅仅换个皮就该叫CM2:99/00而不是CM3了!
为了适应操作系统的变化,CM 3彻底抛弃了以往的游戏战术引擎,而改用全新的阵型图以及WB/WOB(有球/无球)跑位设置——也就是后代FM的核心,我们俗称的球员拉线。
通过拉线,选择狂攻、铁桶阵、攻守平衡、稳守反击、控制节奏这五种现代足球战术方式,终于从99年开始成为FM系列不可或缺的一部分。而与之相应的,后防线站位、多人盯防、传球方式、球队整体节奏等等要素,也醒目的出现在了球队战术板上。
这是FM系列战术理念的第一次进化,甚至可以说,从CM 3开始,FM系列才算有了“战术”这个概念。
而为了搭配战术上的变化,球员能力的概念也很自然要随之发生变化。
这个变化足以颠覆整个足球经理世界。
FM系列诞生之初,对球员能力的描述只有简单的防守、进攻、控球加上守门。此后的续作都有在此基础中增添一些球员属性,但都微不足道。
一直到CM3为止。
从CM 3开始,球员能力才正式被定义为技术精神身体三大类。SI在原来的基础上对球员属性进一步的细化,与各种球队、球员战术设置一一对应,彻底完成了战术设计上的改革。
没错,我们所知的所有球员属性,以及根据这些属性衍生的所谓速度流、技术流或者精神流,都是以CM3作为开端,沿用至今。
这两个根本性的改变,是CM 3取得一切成功的元素,让SI赢得了满堂彩,而这几年间FM系列的大放异彩,与同期其他文字模拟游戏的沉沦相比,SI这个小公司与那些仗着有钱有势有技术的巨头相比,尤为难得。
一款大作,当然要有衬得起他的销量。欧洲游戏年度销售榜上醒目的NO.1,也正式宣告,从这时开始,从这里开始,FM系列即将飞黄腾达。
平步青云摔倒时才最疼,SI似乎也深知这个道理。
CM 3往后的两年里,SI又一次收敛了所有的锋芒,没有盲目推出续作,只是在CM 3原有的基础上,推两款名为新系列游戏(CM 00 1,CM 01 2)实为CM 3的升级包对数据库进行扩充,增加了诸如新闻发布会、记事本、球员对比等一些游戏细节上的内容,以及对游戏进行了优化。
但是这两年的沉寂却不同于98年受到的嘲讽和质疑,CM 3连续3年的红火让所有SI黑退避三舍,而SI不以物喜、冷静默然的表现,仿佛暴雨前的宁静,酝酿着一场席卷全球的飓风。
FM历史上,CM4与CM 03 4实为两款作品,但SI官方一直把这两款作品都称为CM4,所以在本文中把他们合并到一处统一作为CM4同一款产品来写。CM4受众太广,人人心中都有一个不同的CM4,超级难写的,若有不妥之处,请指教。
量变能引起质变。95年到99年,是FM系列的第一次量变,然后有了CM 3。00年到03年,SI用三年的时间,积累起了第二次足以引起质变量变。
2003年3月28日,FM诞生十周年,这是一个伟大的年份,这是一个伟大的日子。天空一声巨响,FM系列史上最成功的作品,所有经历过那个时代的FMer心中永恒的记忆,CM 4,携带一身王霸之气华丽登场。
从FM系列诞生之初一直到2010年10月的今天位置,CM4都足以堪称最华丽的一笔,楼主吐干了肚子里仅有的一点墨水,除了“牛逼”二字,所有形容词都显得如此苍白无力。
CM4开创了FM系列最黄金的时期,是他让无数追星族认识到主帅对于俱乐部的重要性,他让无数伪球迷从fans进化成supporter、从只看场面的小白进化成偶尔也能侃一两句传中你妹呀的老鸟,他培养一个又一个正太控,他孕育了一个又一个恋妖人癖。他创造了一个同时属于真球迷、伪球迷、不真不伪球迷的世界,让我们疯狂迷恋、并投身其中上演一幕又一幕悲喜剧,让我们在一个无比美好的幻想世界里撒播一层又一层Otto Rehhagel光环,创造一段又一段Guy Roux奇迹。
(关于雷哈格尔与居伊鲁,请自行度娘。)
毫不客气的说,对于0304年的球迷,包括那时候连欧冠杯和欧锦赛都听不太清的我自己,CM 4,即为该时代之名!
(鸣谢特邀嘉宾阴沟同学不收一枚屁股币龙套演出!)
直到2010年的今天,你如果问我说“请问CM4对比起前作有什么进化”,我只会回答你:“请问从CM4直到FM2008有什么进化”。
这话虽然有点夸大,但事实就是如此,除了更庞大的数据库、更精美的限制界面,以及添加了一些自定义功能(包括自制皮肤、队徽、头像等),哦最多算上核武器,续作直到FM2008甚至只多了一个3D视角的FM2009与CM4相比,都毫无“进化”二字可言。
从自由度到传球方式到传中落点的拉线,从CM4开始沿用至今;庞大的各种战术选项,从CM4开始沿用至今;从边路进攻到中路突进等等各种战术理念、从速度流到技术流,从CM4开始沿用至今;包括天朝在内的全世界各大洲各大主要国家上百个联赛,从CM4开始沿用至今;PA、CA的重要性已经养妖习惯,从CM4沿用至今;即使进入了10年代,无数FMer依然视之为王道的2D视角,从CM4沿用至今。
……从CM4沿用至今。
……沿用至今。
……至今。
FM系列从05直到即将推出的11,与其说是从CM93演变而来,不如说CM3到CM4的变革才是后续产品赖以生存的根基。
这根基不单指游戏,从CM4开始,第一因为游戏模式的的新颖,第二因为世界足球的蓬勃(感谢完国家然后感谢电视转播的优越),第三则因为多语言甚至包括推出中文版本,让FM系列在全球第一次有了群众基础,有了根基。这其中,就包括当时还蹲在初中每天逃课到煤渣地打滚、课后跑回家继续在电脑上CM4里指挥一串串0和1在绿茵地上打滚的楼主我……
CM4里的0和1吗,你们还好吗?
CM4的玩家们,你们还好吗?
曾记否,JR、薯仔的激突猛进,卡卡、C罗的稚气未脱?曾记否,BT442的威力无匹,NB433的横扫千军?曾记否,AI把健康的一比的Buffon丢替补席上,用Vieri当门将的啼笑因缘?曾记否,被狗咬伤的囧迫不堪、从墙上摔伤的天雷滚滚?
曾记否,还没有下片子的习惯,昼夜开着电脑只为CM的轻狂岁月?
今宵别离后,何日君再来。
凌晨三点,喳喳蝉鸣,淡淡茶香。
我坐在电脑前,对着散发微弱光芒的显示器,感觉今天不是10年10月,而是那个第二天逃课也要让Leedz夺冠的夜,那个不属于张狂初现的魔力鸟,不属于黯然离队的万人迷,不属于挥金如土的阿布,只属于我和CM4的03年夏天。
拼抢,欢呼,嘘声,球,人,奖杯。
兴奋,激动,紧张,焦,燥,感动。
欢迎来到足球经理的世界。
曾记否CM4的广告词?日复一日、年复一年,忠实的写照着每一个FMer。
Don’t lose your head. Sit uprights. Be confident with the players,and the games is coming.
首先冷静,然后坐定,给点自信。你听,开场哨音长鸣。
从默默无闻到大红大紫,许多产品花了一辈子也做不到的事,FM用了十年;从登堂入室到走上神坛,许多公司用了无数代产品也做不了的事,SI用了三代。
CM4如何被称为堪称经营类、竞技类神作已经无需考究了,人人都认为是神作的游戏,还需要考究吗?
不过如果真要找个原因的话,请看下面一组数据:
首发当日,打破英国本土电脑游戏销售记录(因为有demo);
销售一周,打破英国本如游戏销售记录(请大家相信当年PS2的威力);
销售一月,打破欧盟无年龄限制电脑游戏销售记录(大家别忘了03年的COD、玻璃渣的war craft III,恩,虽然这俩都是有年龄限制的……);
销售半年,打破,呃,这个楼主真Google不到还打破神马记录了……
无论如何,CM4的成功让SI上下全体半夜做梦也会笑醒。这种成功来的如此迅疾,以至于前无古人,往后连SI本身推出的后续作品也不可超越。
SI式的成功是不可复制的,在我印象里可以翻找出无数异常霸气但也推出过扑街作品的系列游戏,但这里面绝不会有SI。
SI值得所有急功近利的企业去学习,因为哪怕CM4如此成功,她始终没有迷失了FM的道路,依然诚诚恳恳,一步一个脚印向前走着,根据CM93到CM4的得失,从黄金时代缓步走进FM历史中的探索期。
⑧ javascript 问题
简单说一下吧,这是因为元素标签换行会产生空文本节点,注意是空的文本节点哦,这在非IE或IE9以上的浏览器下会有这样的问题,比如:
<body> <p>Hello</p> <p>world</p></body>body下面总共有5个元素哦,不是2个,是不是很不可思议,楼主可以亲自在Firefox/chrome下测试,感受一下。这是由于,上面提到的节点之间的换行会产生空文本节点。为了解决楼主提到的问题,得先调用下面函数将空文本节点给移除掉:
function cleanWhitespace(element){ element = element || document; var nextNode, cur = element.firstChild; while(cur){ nextNode = cur.nextSibling; if(cur.nodeType == 3 && !/\S/.test(cur.nodeValue)){ element.removeChild(cur); }else if(cur.nodeType == 1){ cleanWhitespace(cur); } cur = nextNode; } }如果想清除文档下所有空文本节点,则这样调用:
cleanWhitespace();调用完了,楼主你在去body下面有个元素S,用s.parentNode.fisrtChild就可以找到S啦!!!